0

我在一个我正在努力改进的程序中遇到了这个问题。

class Class1
{
    private:

    public:
       Class1();
       ~Class1();

    protected:

        Class2* Object2;   
};
Imbalance::Imbalance()
  {
   Object2 = (Class2*)NULL;
  }

有人可以告诉我创建对象时 * 的含义是什么,以及为什么在实例化类时会使对象 = 类为空。有没有我可以读的书?或者关于 MQL4、C++ 中的类和对象的任何好的文档或网页......

4

1 回答 1

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 的语法结构和最近(构建 509 后)扩展带来了更多(从 MQL5 域借用),*它也是指向对象的指针,并new动态创建对象。但与 C++ 不同的是,它不是指向内存位置的直接指针,而是使用描述符概念的间接指针。

预定义的常量变量NULL意味着——就像在 C++ 中一样——没有值。它可以分配给任何其他基本类型的变量而无需转换。允许将基本类型变量与NULL值进行比较。

在“New-MQL4”(构建 509 后)NULL中,也可以将其与指向使用new运算符创建的对象的指针进行比较。

(感谢 user3666197 提供额外的 MQL4 特定信息)

于 2014-09-23T20:58:22.447 回答