Похоже, вам может понадобиться учебник по понятию «переменная» в C ++.
В C ++ время жизни каждой переменной связано с ее охватывающей областью действия.Простейшим примером этого являются локальные переменные функции:
void foo() // foo scope begins
{
UnloadingShip anUnloadingShip; // constructed with default constructor
// do stuff without fear!
anUnloadingShip.Unload();
} // // foo scope ends, anything associated with it guaranteed to go away
В вышеприведенном коде «anUnloadingShip» создается по умолчанию при вводе функции foo (т.е. вводится ее область действия).Никаких «новых» не требуется.Когда охватывающая область исчезает (в этом случае при выходе из foo), ваш пользовательский деструктор автоматически вызывается для очистки UnloadingShip.Связанная память автоматически очищается.
Когда охватывающая область представляет собой класс C ++ (то есть переменную-член):
class UnloadingBay
{
int foo;
UnloadingShip unloadingShip;
};
время жизни связано с экземплярамикласс, поэтому, когда наша функция создает «UnloadingBay»
void bar2()
{
UnloadingBay aBay; /*no new required, default constructor called,
which calls UnloadingShip's constructor for
it's member unloadingShip*/
// do stuff!
} /*destructor fires, which in turn trigger's member's destructors*/
, члены aBay создаются и живут так же долго, как и «aBay».
Все это выясняется во время компиляции .Не существует подсчета ссылок во время выполнения, предотвращающего разрушение.Никаких соображений по поводу чего-либо еще, что может относиться к или , указывает на эту переменную.Компилятор анализирует написанные нами функции, чтобы определить область действия и, следовательно, время жизни переменных.Компилятор видит, где заканчивается область переменной, и все, что нужно для очистки этой переменной, будет вставлено во время компиляции.
"new", "NULL", (не забывайте "delete") в C ++ входят виграть с указателями.Указатели являются типом переменной, которая содержит адрес памяти некоторого объекта.Программисты используют значение «NULL», чтобы указать, что указатель не содержит адрес (то есть он ни на что не указывает).Если вы не используете указатели, вам не нужно думать о NULL.
Пока вы не освоите, как переменные в C ++ входят и выходят из области видимости, избегайте указателей.Это совсем другая тема.
Удачи!