Что такое конструктор по умолчанию? Как инициализируются элементы данных объекта, если класс имеет только неявно определенный конструктор по
умолчанию? Ответы на все эти вопросы я раскрою в этот статье.
Конструктор по умолчанию — это конструктор, который может быть вызван без аргументов
При неявно определенном конструкторе только для статических объектов гарантируется, что все их члены (в том числе и динамические) будут обнулены. Также обнуляются статические свойства классов, но только для первого созданного объекта. Объекты, определенные локально или распределенные динамически, в начальный момент будут содержать случайный набор битов, оставшихся в стеке программы.
class Tester
{
public:
static int n;
Tester(void);
~Tester(void);
};
//Tester.cpp
int Tester::n;
//main
void main()
{
Tester a;
cout<<a.n; //n=0;
return;
}
class Tester
{
public:
int n;
Tester(void);
~Tester(void);
};
//main
void main()
{
static Tester a;
cout<<a.n; //n=0;
return;
}
class Tester
{
public:
int n;
Tester(void);
~Tester(void);
};
//main
void main()
{
Tester a;
cout<<a.n; //n-случайное число;
return;
}
Конструктор не создается автоматически. Если конструктор не прописан в методах класса, то при обращении (явно или в функции) к свойствам объекта компилятор выдает сообщение об использовании объекта, который не был инициализирован.
Comments ( 0 )