要求读入 3 个整数 m、n 和 p,然后按照下列要求完成相关设计: 1.定义一个基类 A,在其中包含保护的数据成员 int i,设计类 A 的带参构造函数 对 i 进行初始化,定义成员函数 display()显示 i 值; 2.定义基类 A 的公有派生类 A1,且 A 是 A1 的虚基类;A1 中包含保护的数据成 员 int j,设计类 A1 的构造函数; 3.定义基类 A 的公有派生类 A2,且 A 是 A2 的虚基类;A2 中包含保护的数据成员 int k,设计类 A2 的构造函数; 4.定义类 A3,A3 是 A1 和 A2 以多继承方式生成的公有派生类,设计类 A3 的构 造函数;定义成员函数 disp()在其中调用 display()函数显示 i 值,另外输出 j 和 k 值; 5.在 main()中定义类 A3 的 1 个对象变量,通过输入的 3 个整数完成对象的创 建;调用类 A3 的成员函数 disp()输出信息。
时间: 2024-03-14 21:47:49 浏览: 28
好的,以下是符合你要求的 C++ 代码:
```cpp
#include <iostream>
using namespace std;
class A {
protected:
int i;
public:
A(int _i) : i(_i) {}
void display() { cout << "i = " << i << endl; }
};
class A1 : virtual public A {
protected:
int j;
public:
A1(int _i, int _j) : A(_i), j(_j) {}
};
class A2 : virtual public A {
protected:
int k;
public:
A2(int _i, int _k) : A(_i), k(_k) {}
};
class A3 : public A1, public A2 {
public:
A3(int _i, int _j, int _k) : A(_i), A1(_i, _j), A2(_i, _k) {}
void disp() {
display();
cout << "j = " << j << endl;
cout << "k = " << k << endl;
}
};
int main() {
int m, n, p;
cin >> m >> n >> p;
A3 obj(m, n, p);
obj.disp();
return 0;
}
```
主要思路是通过虚继承解决多继承带来的二义性问题,同时使用构造函数进行初始化。在 `A3` 中,调用 `display()` 函数显示 `i` 的值,并输出 `j` 和 `k` 的值。在 `main()` 函数中,通过输入的 3 个整数创建 `A3` 的对象,并调用 `disp()` 函数输出信息。