关于C++构造函数初始化列表的使用的问题!!
书上说,一个类中,“哪怕只定义了一个构造函数,编译器就不会再生成默认构造函数”,又说“没有默认构造函数的类类型成员,以及const或引用类型成员,不管哪种类型,都必须在构...
书上说,一个类中,“哪怕只定义了一个构造函数,编译器就不会再生成默认构造函数”,又说“没有默认构造函数的类类型成员,以及const或引用类型成员,不管哪种类型,都必须在构造函数初始化列表中进行初始化”,从第二句话来理解,就是说没有默认构造函数的类成员如果不在初始化列表中进行初始化,就是非法的,那么,如果我在一个类中自己定义了一个构造函数(我的理解:结合第一句话,也就是说此时编译器不会生成默认构造函数,即此时此类的成员是没有默认构造函数的)但这时我发现,不论是在初始化列表中进行显式初始化或是在函数体中进行赋值初始化,都是合法的,感觉与第二句话矛盾。表述完毕!求大神指教!!
展开
1个回答
展开全部
首先、因为const和引用类型 只能被初始化,不能被赋值,所以必须用初始化列表
其次、第二句话你理解错了,说的是“类类型成员”,也就是说你的data member有一个类的对象,而不是build-in型的变量。
其次、第二句话你理解错了,说的是“类类型成员”,也就是说你的data member有一个类的对象,而不是build-in型的变量。
参考资料: http://blog.csdn.net/gzshun/article/details/7256507
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询