当我们创建一个类A,此类的成员可能会包含另一个类B。
# include<B.h>
class A{
public:
...
...
B b;
}
对于B,他有自己的一套构造函数:
class B{
B(int a);
....
}
当我们创建A的对象时,会将其成员B的对象也构造出来。但如果构造函数中并没有体现B,想让B默认构造的话,就会报错或使得参数并不能很好地传递。因为我们的B必须使用有参构造。
A::A(){
....
....
// 均与B无关,则报错
}
怎么样才能不报错,那就是在A的构造函数里面显式地构造B成员,从而避免B的默认构造。
最好的方法是使用new创建一个B指针。
# include<B.h>
class A{
public:
...
...
B* b;
}
A::A(){
...
B = new B(int a);
}