默认构造函数中调用构造函数

Loading
struct  CLS
 
{
 
   int m_i;
 
   CLS(int i):m_i(i)
 
   {}
 
   CLS()
 
   {
 
     CLS(0);
 
   }
 
};
 
 
CLS obj;
 
cout<<obj.m_i<<endl;

我们知道,当定义一个对象时,会按顺序做2件事情:
1)分配好内存(非静态数据成员是未初始化的)
2)调用构造函数(构造函数的本意就是初始化非静态数据成员)

显然上面代码中,CLS obj;这里已经为obj分配了内存,然后调用默认构造函数,但是默认构造函数还未执行完,却调用了另一个构造函数,这样相当于产生了一个匿名的临时CLS对象,它调用CLS(int)构造函数,将这个匿名临时对象自己的数据成员m_i初始化为0;但是obj的数据成员并没有得到初始化。于是obj的m_i是未初始化的,因此其值也是不确定的


原文链接:https://blog.csdn.net/wu_123_456/article/details/38397441

posted @ 2022-03-21 18:43  ainingxiaoguai  阅读(80)  评论(0)    收藏  举报