#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<<endl; cout<<a2.b<<","<<a2.obj.a<<endl; cout<<a3.b<<","<<a3.obj.a<<endl; return 0; }输出结果:10,10 10,30 10,90
时间: 2023-10-30 22:20:44 浏览: 165
这段代码中,需要在 class B 中添加一个构造函数来初始化 A 类的 obj 成员。正确的代码如下:
```
#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*3){}
};
int main(){
B a1(10);
B a2 = a1;
B a3 = a2;
cout<<a1.b<<","<<a1.obj.a<<endl;
cout<<a2.b<<","<<a2.obj.a<<endl;
cout<<a3.b<<","<<a3.obj.a<<endl;
return 0;
}
```
输出结果为:
```
10,30
10,30
10,30
```
这是因为在 class B 的构造函数中,使用了参数 n 来初始化 obj,而 n 传入的是 B 的构造函数中的参数,所以 a1、a2、a3 对应的 obj 的 a 值都是 30。
相关问题
#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
在此处补充代码,补充后的代码如下:
```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。
#include <iostream> using namespace std; class A { public: int val; A(int // 在此处补充你的代码 }; int main() { int m,n; A a; cout << a.val << endl; while(cin >> m >> n) { a.GetObj() = m; cout << a.val << endl; a.GetObj() = A(n); cout << a.val<< endl; } return 0; }
代码中缺少A类的构造函数的实现。下面是完整的代码实现:
#include <iostream>
using namespace std;
class A {
public:
int val;
A(int n = 0) { // 构造函数
val = n;
}
A& GetObj() { // 返回引用
return *this;
}
};
int main() {
int m,n;
A a;
cout << a.val << endl;
while(cin >> m >> n) {
a.GetObj() = m;
cout << a.val << endl;
a.GetObj() = A(n);
cout << a.val<< endl;
}
return 0;
}
阅读全文