【问题标题】:(Mql4) What differentiates a "Method" from a "Constructor"?(Mql4) “方法”与“构造函数”的区别是什么?
【发布时间】:2021-11-03 19:42:44
【问题描述】:

我的问题是指通过“公共”访问的类内部的方法。

在参考 mql4 文档时,似乎没有列出关于如何正确将方法实例化为类的源代码,或者首先是什么使方法成为方法。

在我看来,如果你将一个函数放在一个类中,这本身就使它成为一个方法?还是我错了。有人可以帮我解决这个问题吗?

【问题讨论】:

  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: class methods mql4


【解决方案1】:

构造函数方法的基本信息和区别:

构造函数:

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

(docs)

方法:

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

简单示例:

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;
}

类成员(对象)初始化:

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);
}

在我看来,如果你将一个函数放在一个类中,那么在 本身使它成为一个方法?

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

方法与类相关,没有类就不能存在。

【讨论】:

  • 非常彻底的回答!和完美的例子。谢谢你。干得好!虽然,自从发布我的问题以来,我已经通过实验了解了这些差异,但您的回答有助于确认我的结果。我
猜你喜欢
  • 2019-10-08
  • 1970-01-01
  • 2021-01-08
  • 2015-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多