(Mql4) "Method" 与 "Constructor" 的区别是什么?
(Mql4) What differentiates a "Method" from a "Constructor"?
我的问题是指通过“public”访问 Classes 内部的方法。
关于 mql4 文档,似乎没有列出关于如何将方法正确实例化为 Class 的来源,或者甚至没有首先使方法成为方法的来源。
在我看来,如果将一个函数放在 Class 中,它本身就是一个方法?还是我错了。有人能帮我解决这个问题吗?
constructor和method的基本信息和区别:
构造函数:
- 构造函数是一个特殊的函数,在创建结构或class的对象时自动调用,通常用于初始化class个成员,
- 构造函数的名称必须与 class 名称匹配,
- 构造函数没有return类型(可以指定void类型)
(docs)
方法:
- 方法是属于 class 或对象的函数,即没有 class.
就无法存在
- 您需要在 class 中声明 class 方法。否则它不会是 class 方法。
- 方法可以 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.
就不可能存在
我的问题是指通过“public”访问 Classes 内部的方法。
关于 mql4 文档,似乎没有列出关于如何将方法正确实例化为 Class 的来源,或者甚至没有首先使方法成为方法的来源。
在我看来,如果将一个函数放在 Class 中,它本身就是一个方法?还是我错了。有人能帮我解决这个问题吗?
constructor和method的基本信息和区别:
构造函数:
- 构造函数是一个特殊的函数,在创建结构或class的对象时自动调用,通常用于初始化class个成员,
- 构造函数的名称必须与 class 名称匹配,
- 构造函数没有return类型(可以指定void类型)
(docs)
方法:
- 方法是属于 class 或对象的函数,即没有 class. 就无法存在
- 您需要在 class 中声明 class 方法。否则它不会是 class 方法。
- 方法可以 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.
就不可能存在