Our Blog

Конструктор по умолчанию в C++

Что такое конструктор по умолчанию? Как инициализируются элементы данных объекта, если класс имеет только неявно определенный конструктор по
умолчанию? Ответы на все эти вопросы я раскрою в этот статье.

Конструктор по умолчанию — это конструктор, который может быть вызван без аргументов

При неявно определенном конструкторе только для статических объектов гарантируется, что все их члены (в том числе и динамические) будут обнулены. Также обнуляются статические свойства классов, но только для первого созданного объекта. Объекты, определенные локально или распределенные динамически, в начальный момент будут содержать случайный набор битов, оставшихся в стеке программы.

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 )
    -->