我在一个我正在努力改进的计划中遇到过这个问题。
class Class1
{
private:
public:
Class1();
~Class1();
protected:
Class2* Object2;
};
Imbalance::Imbalance()
{
Object2 = (Class2*)NULL;
}
有人可以告诉我在创建对象时*意味着什么以及为什么在实例化类时你会使对象=类的东西为null。有没有我能读到的书?或者MQL4,C ++中的类和对象上的任何好的文档或网页......
答案 0 :(得分:2)
C ++中的*
意味着它是指向对象的指针。
初始化指向NULL
的指针意味着它指向无处(顺便说一下,nullptr
将成为更好的选择)。
通常,在您的代码中,您会找到一些声明,如:
if ( Object2 == NULL ) // if not pointing to an object
Object2 = new Class2; // create a new one
大多数关于C ++的书籍都在深入解释指针。
所以我的第一个答案是来自B.Stroustrup的“C ++编程语言”。
编辑:MQL4语言
在MQL4语言中,历史上基于类似C语法的构造和最近(后Build 509)扩展带来了更多(借用MQL5域), *
是也是指向对象的指针, new
动态创建对象。但与C ++不同,它不是指向内存位置的直接指针,而是使用descriptor概念的间接指针。
预定义的常量变量NULL
意味着 - 就像在C ++中一样 - 没有任何价值。它可以在没有转换的情况下分配给任何其他基本类型的变量。允许将基本类型变量与NULL
值进行比较。
在“New-MQL4”(构建版本509)中,NULL
也可以与使用new
运算符创建的对象的指针进行比较。
(感谢user3666197获取额外的MQL4特定信息)