#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 08:20:44 浏览: 190
这段代码中,需要在 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(int x = 0) : val(x) {}`,用于构造函数的定义。完整代码如下:
```c++
#include <iostream>
using namespace std;
class A {
public:
int val;
A(int x = 0) : val(x) {} // 构造函数定义
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;
}
```
这段代码定义了一个类 A,包含一个整型成员变量 val。构造函数 A(int x = 0) 初始化 val 的值为 x 或者默认值 0。成员函数 GetObj() 返回对象本身,方便进行连续的赋值操作。main() 函数中,定义了一个对象 a,初始时 val 值为 0。然后进入循环,每次输入两个整数 m 和 n,先将 a 的 val 赋值为 m,再输出 val 的值;然后将 a 的 val 赋值为一个新构造的对象 A(n),再输出 val 的值。循环结束后,程序返回 0。
阅读全文