#include <iostream> using namespace std; class A { public: int a; A(int n) : a(n) { } }; class B { public: int b; A obj; // 在此处补充你的代码 }; int main() { B a1(10); B a2 = a1; B a3 = a2; cout << a1.b << "," << a1.obj.a
时间: 2024-03-20 17:41:37 浏览: 105
#include <iostream>
在此处补充代码,补充后的代码如下:
```c++
#include <iostream>
using namespace std;
class A {
public:
int a;
A(int n) : a(n) { }
};
class B {
public:
int b;
A obj;
B(int n) : b(n), obj(n) { }
B(const B& other) : b(other.b), obj(other.obj.a) { }
};
int main() {
B a1(10);
B a2 = a1;
B a3 = a2;
cout << a1.b << "," << a1.obj.a << endl; // 输出 10,10
cout << a2.b << "," << a2.obj.a << endl; // 输出 10,10
cout << a3.b << "," << a3.obj.a << endl; // 输出 10,10
return 0;
}
```
解析:
代码中定义了两个类 A 和 B,其中 A 类只有一个 int 类型的成员变量 a,构造函数用于初始化 a;B 类有两个成员变量,一个是 int 类型的成员变量 b,另一个是 A 类型的对象 obj,构造函数用于初始化 b 和 obj。B 类还定义了一个拷贝构造函数,用于实现深拷贝。
在 main 函数中,定义了三个 B 类型的对象 a1、a2 和 a3,其中 a1 通过构造函数初始化,a2 和 a3 通过拷贝构造函数初始化。最后输出这三个对象的成员变量 b 和 obj.a 的值,都是 10。
阅读全文