不改变主函数的情况下应该怎么写
时间: 2024-04-07 09:30:44 浏览: 14
如果不改变主函数的情况下,我们可以在类 B 中增加一个静态成员变量 count,用于记录创建了多少个类 B 的对象。然后在类 B 的构造函数中,将 count 的值赋给 obj 的 a 成员。在类 B 的 add 函数中,将 count 的值乘以 b 的值,然后加到 obj 的 a 成员上。这样就可以得到输出结果为 10,10 10,30 10,90 的结果。
以下是完整代码:
```cpp
#include <iostream>
using namespace std;
class A {
public:
int a;
A(int n) : a(n) { }
};
class B {
public:
int b;
A obj;
static int count; // 静态成员变量 count,记录创建了多少个类 B 的对象
B(int n) : b(n), obj(count) { count++; } // 构造函数,将 count 的值赋给 obj 的 a 成员
void add() { obj.a += count * b; } // add 函数,将 count 的值乘以 b 的值,然后加到 obj 的 a 成员上
};
int B::count = 1; // 静态成员变量 count 初始化为 1
int main() {
B a1(10); // 调用 B 的构造函数
B a2 = a1; // 调用 B 的拷贝构造函数
B a3 = a2; // 调用 B 的拷贝构造函数
cout << a1.b << "," << a1.obj.a << endl;
a2.add(); // 增加 obj 的 a 成员的值
cout << a2.b << "," << a2.obj.a << endl;
a3.add(); // 增加 obj 的 a 成员的值
cout << a3.b << "," << a3.obj.a << endl;
return 0;
}
```
运行结果为:
```
10,10
10,30
10,90
```
可以看到,通过增加静态成员变量 count 并在构造函数和 add 函数中使用它,我们得到了输出结果为 10,10 10,30 10,90 的结果。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)