一、类对象作为成员变量时的构造函数问题
1、问题描述
如果 一个类 A 的对象 作为 另外一个类 B 的成员变量时 ,
在以下场景会报错 :
为类 A 定义 有参的 构造函数 , 那么 A 的无参默认构造函数就失效了...;
此时使用 默认无参构造函数 初始化 B , 就会报错 ;
在一个类中 , 其成员变量是 带有参构造函数 的类型 , 这种情况下没有调用 有参构造函数的机会 , 此时就会出现 编译报错情况 ;
在下面的代码中..., A 只有通过 有参构造函数 A(int age, int height) 进行初始化 , 无法再使用 无参构造函数 ;
class A
{
public:
// 带参构造函数
A(int age...height)
{
}
public:
int m_age; // 年龄
int m_height; // 身高
};
在 B 中 , 如下声明 A 成员变量 , 只能调用 A 的 无参构造函数创建...A 对象 , 但是 A 的 无参构造函数无法使用 , 必须使用 A 的有参构造函数 , 这里就出现问题 , 报错 “B::B(void)”: 由于 数据成员“B::m_a”不具备相应的 默认构造函数