2014-09-23 2 views
0

Я наткнулся на это в программе, которую я пытаюсь улучшить.MQL4: Object = (класс *) NULL;

class Class1 
{ 
    private: 

    public: 
     Class1(); 
     ~Class1(); 

    protected: 

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

Может кто-нибудь сказать мне, что * означает, что при создании объекта и почему при создании экземпляра класса вы бы объект = класс что-то пустое. Есть ли книга, которую я могу прочитать об этом? Или любой хороший документ или веб-страница о классе и объектах в MQL4, C++ ...

ответ

2

* в C++ означает, что это указатель на объект.

Инициализация указателя на NULL означает, что он указывает на никуда (кстати, в настоящее время лучшей альтернативой станет nullptr).

Обычно, в данный момент в вашем коде, вы найдете некоторые заявления вроде:

if (Object2 == NULL)  // if not pointing to an object 
    Object2 = new Class2; // create a new one 

Большинство книг по C++ объяснить указатели в глубину.

Итак, моим первым ответом будет «Язык программирования C++» от B.Stroustrup.

Некоторые онлайн-уроки: here и here.

Edit: Язык MQL4

В языке MQL4, который был исторически на основе C-как конструкты синтаксических и последние (после сборки 509) расширений принесло несколько больше (заимствованный из области MQL5), то * также является указателем на объект, а new создает объект динамически. Но в отличие от C++, это не прямой указатель на место памяти, а косвенный указатель, использующий концепцию descriptor.

Предопределенная постоянная переменная NULL означает - как в C++ - что нет значения. Он может быть назначен переменным любых других фундаментальных типов без преобразования. Допускается сравнение основных переменных типа с значением NULL.

В «New-MQL4» (post Build 509) NULL также можно сравнить с указателями на объекты, созданные с помощью оператора new.

(Спасибо user3666197 за дополнительную MQL4 конкретной информации)

+1

Учитывая уровень этого вопроса, следует добавить базовую грунтовку на C++, с особым вниманием к указателям, '' NULL' и nullptr'. – Deduplicator

+0

Я вижу. Im кодирование в MQL, которое не поддерживает nullptr. Объект if null создает больше смысла. Я взял несколько курсов, но раньше этого не видел. У меня достаточно сейчас, чтобы углубиться в книги, зная теперь, в какой области меня. Спасибо всем. – Barklem