|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Как узнать инициализирована переменная тип класса или нет?
Добрый день,
После Дельфи начинаю программировать на с++. В Дельфи было очень удобно проверить создана ли переменная типа класса или нет, например: Код:
TMyClass = class(...) ... end; var MyClass: TMyClass; begin ... if MyClass = nil then MyClass = TMyClass.Create(nil); Можно ли в С++ сделать такую же проверку? Последний раз редактировалось M.A.D.M.A.N., 16.03.2015 в 17:47. |
#2
|
|||
|
|||
Почитай про умные указатели
|
#3
|
||||
|
||||
Код:
TMyClass MyClass = NULL; ... if (MyClass == NULL) MyClass = new TMyclass(NULL); jmp $ ; Happy End! The Cake Is A Lie. |
#4
|
||||
|
||||
Если переменная глобальная, она уже обнулена.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#5
|
||||
|
||||
Цитата:
А вообще - инициализация нулем все равно хорошая практика: хуже точно не станет, зато какой-нибудь левый компилятор точно не сгенерирует кривой код, запихнув переменную в секцию BSS (или как там называется uninitialized data в PE-шнике). Хотя это в большей степени к Си относится, конечно. jmp $ ; Happy End! The Cake Is A Lie. |
#6
|
||||
|
||||
Внутри функции инициализировать переменную nil`ом? Компилятор хинт выдаст, типа «значение присвоено, но нигде и никогда не используется».
[-] А, это ж С++, всё понятно. — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#7
|
||||
|
||||
для глобальных переменных, а также для объектных public использование лишь в одном месте, либо просто объявление не вызывает диарею компилятора ибо они могут быть использованы другими модулями или наследниками.
Пишу программы за еду. __________________ |
#8
|
|||
|
|||
Ну как же нигде не используется?
Код:
TMyClass *MyClass = NULL; ... if (MyClass == NULL)// <<==-----вот здесь !!! MyClass = new TMyclass(NULL); |