#include <iostream>
#include <string>
using namespace std;
class Base {
public:
int k;
Base(int n):k(n) { }
};
class Big
{
public:
int v;
Base b;
// 在此处补充你的代码
};
int main()
{
int n;
while(cin >>n) {
Big a1(n);
Big a2 = a1;
cout << a1.v << "," << a1.b.k << endl;
cout << a2.v << "," << a2.b.k << endl;
}
}
输入
3
4
输出
3,3
3,3
4,4
4,4
考点:【对象成员初始化】
1、根据Big a1(n);
,观察Big
类发现持有Base
类对象,所以需要先初始化Base
类对象才会继而初始化Big
类对象
2、由于Base
类没有无参构造函数,如果不使用初始化表的方法初始化,则会报错。所以这里隐含了调用类型转换构造函数,即将一个数赋值给一个对象,则刚好调用Base
类的有参构造函数
3、综上可得
class Big
{
public:
int v;
Base b;
// 在此处补充你的代码
Big(int n):v(n),b(n){}
};