![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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); |
|
#4
|
||||
|
||||
|
Если переменная глобальная, она уже обнулена.
|
|
#5
|
||||
|
||||
|
Цитата:
А вообще - инициализация нулем все равно хорошая практика: хуже точно не станет, зато какой-нибудь левый компилятор точно не сгенерирует кривой код, запихнув переменную в секцию BSS (или как там называется uninitialized data в PE-шнике). Хотя это в большей степени к Си относится, конечно. |
|
#6
|
||||
|
||||
|
Внутри функции инициализировать переменную nil`ом? Компилятор хинт выдаст, типа «значение присвоено, но нигде и никогда не используется».
[-] А, это ж С++, всё понятно. |
|
#7
|
||||
|
||||
|
для глобальных переменных, а также для объектных public использование лишь в одном месте, либо просто объявление не вызывает диарею компилятора
ибо они могут быть использованы другими модулями или наследниками. |
|
#8
|
|||
|
|||
|
Ну как же нигде не используется?
Код:
TMyClass *MyClass = NULL;
...
if (MyClass == NULL)// <<==-----вот здесь !!!
MyClass = new TMyclass(NULL); |