Я столкнулся с этим в программе, которую я пытаюсь улучшить.
class Class1
{
private:
public:
Class1();
~Class1();
protected:
Class2* Object2;
};
Imbalance::Imbalance()
{
Object2 = (Class2*)NULL;
}
Может кто-нибудь сказать мне, что означает *, когда вы создаете объект, и почему при создании экземпляра класса вы бы сделали объект = класс чем-то нулевым. Есть ли книга, которую я могу прочитать об этом? Или любой хороший документ или веб-страницу о классе и объектах на MQL4, C ++ …
*
в C ++ означает, что это указатель на объект.
Инициализация указателя на NULL
означает, что он указывает на никуда (кстати nullptr
будет лучшей альтернативой в наше время).
Обычно, в какой-то момент в вашем коде вы найдете какое-то утверждение вроде:
if ( Object2 == NULL ) // if not pointing to an object
Object2 = new Class2; // create a new one
Большинство книг по C ++ подробно объясняют указатели.
Поэтому мой первый ответ будет «Язык программирования C ++» от B.Stroustrup.
Некоторые онлайн-уроки: Вот а также Вот.
Изменить: язык MQL4
В языке MQL4, который исторически основывался на C-подобных синтаксических конструкциях и недавних (после Build 509) расширениях, появилось еще несколько (заимствованных из домена MQL5), *
также указатель на объект, и new
создает объект динамически. Но в отличие от C ++, это не прямой указатель на место в памяти, а косвенный указатель, использующий концепцию дескриптор.
Предопределенная постоянная переменная NULL
означает — как в C ++ — что нет значения. Его можно назначать переменным любых других фундаментальных типов без преобразования. Сравнение переменных фундаментального типа с NULL
значение допускается.
В «New-MQL4» (пост Build 509) NULL
также можно сравнить с указателями на объекты, созданные с new
оператор.
(Спасибо пользователю3666197 за дополнительную информацию, специфичную для MQL4)