首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++ primer388页说:没有默认构造函数的类类型的成员必须在构造函数初始化列表中初始化,该怎么解决

2012-04-07 
C++ primer388页说:没有默认构造函数的类类型的成员必须在构造函数初始化列表中初始化帮忙解释下这句,为什

C++ primer388页说:没有默认构造函数的类类型的成员必须在构造函数初始化列表中初始化
帮忙解释下这句,为什么呢

[解决办法]
因为不在初始化列表里面初始化那么编译无法通过,因为你在构造函数体里面赋值的时候不是初始化而是赋值了。那么这就意味着在赋值之前会调用默认构造函数来构造这些成员,然后在此基础上进行赋值。但是很明显没有默认构造函数。
[解决办法]
因为如果你把类成员放在
{}中,就不是初始化,而是赋值。而实际上类成员早在赋值前已经
初始化了。由于没有提供参数,所以就调用默认构造函数。
这就导致,如果你没有默认构造函数,就会出错···
[解决办法]

探讨

引用:
因为如果你把类成员放在
{}中,就不是初始化,而是赋值。而实际上类成员早在赋值前已经
初始化了。由于没有提供参数,所以就调用默认构造函数。
这就导致,如果你没有默认构造函数,就会出错···
再问下 什么叫类类型的成员?是指类的数据成员还是指由类定义的新类型?

[解决办法]
class Test{
Test(int i=10):mem(i){}
int mem;
};

class Obj{
Test mem;
};

Test mem;不就是类类型的数据成员。

热点排行