返回信息流采用初始化列表初始化,是否应该将所有数据成员都进行初始化?如果不列出全部的话会出现啥问题呢?比如
class C{
public:
C():str(""),in(cin){}
private:
string str;
istream ∈
};
如果少写in(cin)如下:
class C{
public:
C():str(""){}
private:
string str;
istream ∈
};
就会编译报错,而把成员变量改成int,string搭配就不会有这种问题,能否说下原因,谢谢了。
这是一条镜像帖。来源:北邮人论坛 / cpp / #77473同步于 2014/3/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
询问一个类初始化问题
niania
2014/3/15镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
我的意思是把成员改成int与string,就可以编译过,谢谢啦,读primer真是受益。
【 在 mogumogu 的大作中提到: 】
: 声明类的对象的时候就会调用构造函数初始化 要把所有的成员都初始化,否则就会出问题。
: 改类型没问题吧 最多算个重载
如果使用了初始化列表的话,成员就会在第一时刻被赋予内容,如果是const或者&的话就需要在列表里。不在列表里的参数,会先使用默认构造函数初始化,然后在constructor中被再次赋值,因此引用或者const就会出错。
【 在 niania 的大作中提到: 】
: 采用初始化列表初始化,是否应该将所有数据成员都进行初始化?如果不列出全部的话会出现啥问题呢?比如
: class C{
: public:
: ...................