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