(Mql4) "Method" 与 "Constructor" 的区别是什么?

(Mql4) What differentiates a "Method" from a "Constructor"?

我的问题是指通过“public”访问 Classes 内部的方法。

关于 mql4 文档,似乎没有列出关于如何将方法正确实例化为 Class 的来源,或者甚至没有首先使方法成为方法的来源。

在我看来,如果将一个函数放在 Class 中,它本身就是一个方法?还是我错了。有人能帮我解决这个问题吗?

constructormethod的基本信息和区别:

构造函数:

  1. 构造函数是一个特殊的函数,在创建结构或class的对象时自动调用,通常用于初始化class个成员,
  2. 构造函数的名称必须与 class 名称匹配,
  3. 构造函数没有return类型(可以指定void类型)

(docs)

方法:

  1. 方法是属于 class 或对象的函数,即没有 class.
  2. 就无法存在
  3. 您需要在 class 中声明 class 方法。否则它不会是 class 方法。
  4. 方法可以 return 具有方法声明中指定类型的值。

简单示例:

class MyClass {                            // Declaration
    private:
        string myName;                     // Property
    public:
        void printName();                  // Method of void return type
        int sumIntegers(int a, int b);     // Method of int return type
        MyClass(string name);              // Constructor declaration
};

MyClass::MyClass(string name) {            // Constructor body
    this.myName = name;
}

int MyClass::sumIntegers(int a, int b) {   //Method body
    return a + b;
}

void MyClass::printName() {
    Print("Your name is: ", this.myName);
}

int sumIntegers(int a, int b){             //Function body
    return a + b;
}

Class成员(对象)初始化:

MyClass *myObject = new MyClass("SO example");

OnInit中的用法示例:

int OnInit() {
    myObject.printName();                            // Method call by object (MyClass)
    Alert("2 + 2 = ", myObject.sumIntegers(2, 2));   // Same as above 
    Alert("2 + 2 = ", sumIntegers(2, 2));            // Function call

    return(INIT_SUCCEEDED);
}

To me it seems that if you place a function inside of a Class, that in itself makes it a Method?

是的,但请记住,函数是一段代码,仅在调用时运行,与class无关。

方法与class相关,没有class.

就不可能存在