c++ 中关于没有默认构造函数的成员类对象问题
来源:互联网 发布:linux arm 启动代码 编辑:程序博客网 时间:2024/05/22 06:24
c++中在一个类中定义成员类变量,该成员类变量必须要有默认构造函数(可以是自己定义的无参默认构造函数),否则会报错。
那么针对没有默认构造函数的成员类变量怎么定义呢?
在编写c++程序时,会碰到这样的问题:
class B{ int a; public: B(int aa):a(aa){}//没有默认构造函数 }; class A{B b(4)};//在这一行,会报错,因为B没有默认构造函数
会产生错误error C2059: syntax error : 'constant'。
但是如果将代码改一下变成:
class B{ int a; public: B(){}//自己写的默认构造函数 }; class A{ B b; };
编译正常!无错误。
于是我们得出一个结论:定义一个成员类对象时,不能在一个类里面创建一个没有默认构造函数的类对象。
但是对于某些情况,必须创建一个没有默认构造函数的成员类对象该怎么办呢?
解决方法如下:
对于上面那段程序我们可以稍作改进:
class A { B b; public: A():b(4){} }
这样就没问题了。对成员类对象,要用初始化列表的方法初始化,也就是进入构造函数之前进行初始化,不管这个构造函数是有参还是无参的默认构造函数。
0 0
- c++ 中关于没有默认构造函数的成员类对象问题
- 关于无默认构造函数的类的对象作为成员变量的问题
- 没有默认构造函数的问题, 对于类成员变量有别的类成员,则在类 构造函数中也必须对那个类成员变量进行初始化,除非那个类 成员有默认构造函数
- 关于派生类拷贝构造函数中使用基类私有类对象成员的问题
- 关于”类‘customer’中不存在默认构造函数“的问题
- effective C++之关于类成员的初始化,及默认构造函数、默认赋值构造函数和赋值函数
- C++中默认构造函数中数据成员的初始化
- 关于构造函数构造默认对象加括号的疑惑
- 类和对象--默认的成员函数
- VS2013 C++项目 没有默认的构造函数问题:
- c++结构体中包含类对象成员的问题 malloc函数不能调用构造函数 new可以
- C++类的特殊成员-默认/拷贝/移动构造函数
- 在Java中,采用类的默认构造函数构造对象的方法!
- 类中默认的成员函数
- 关于类中new对象与构造函数执行顺序的问题
- C++构造函数中成员对象的初始化顺序
- C++中构造函数,成员对象的初始化顺序
- 没有合适的默认构造函数可用
- (笔记)两种判断奇数偶数的方法
- C++编程规范之28:优先使用++和—的标准形式。优先调用前缀形式
- 沟通-让对方愉快的达成目的
- 奋斗不止 自强不息:当职业生涯中遇到不公怎么办
- Java中的字节对齐方式
- c++ 中关于没有默认构造函数的成员类对象问题
- C#学习2
- C++编程规范之29:考虑重载,以避免隐式类型转换
- http协议上传实现
- 折半查找的时间复杂度log2(n)的推导
- BW中DSO的分类及应用
- C++编程规范之30:避免重载&&,||或,(逗号)
- java数据结构-HashMap
- Android Animation之frame animation