(1)首先掌握菱形继承的概念,即两个子类继承同一个父类,而又有新的子类同时继承这两个子类。编写程序,构建一个不带虚拟继承的菱形继承,以及一个带虚拟继承的菱形继承。可以参考一下命名方式,不带虚拟继承的父类为A,两个子类为B1、B2,继承B1、B2的子类为C,带虚拟继承的父类为VA,两个子类为VB1、VB2,继承VB1、VB2的子类为VC,基类A与VA中需要包含一个整型成员变量。在主函数中,通过内存容量度量函数sizeof()分别对int、V、VC进行测量并显示,程序解决方案平台为X86。并在后面添加注释
时间: 2024-02-22 16:56:09 浏览: 61
C++类继承之子类调用父类的构造函数的实例详解
好的,以下是不带虚拟继承和带虚拟继承的菱形继承的实现代码,已经添加了注释:
```c++
#include <iostream>
using namespace std;
// 不带虚拟继承的菱形继承
class A {
public:
int num; // 基类A中包含一个整型成员变量
};
class B1 : public A {
public:
int b1;
};
class B2 : public A {
public:
int b2;
};
class C : public B1, public B2 {
public:
int c;
};
// 带虚拟继承的菱形继承
class VA {
public:
int num; // 基类VA中包含一个整型成员变量
};
class VB1 : virtual public VA { // 带有虚拟继承
public:
int b1;
};
class VB2 : virtual public VA { // 带有虚拟继承
public:
int b2;
};
class VC : public VB1, public VB2 {
public:
int c;
};
int main() {
cout << "Size of int: " << sizeof(int) << endl; // 打印int类型的内存大小
// 不带虚拟继承的菱形继承
cout << "Size of C: " << sizeof(C) << endl; // 打印C类型的内存大小
// 带虚拟继承的菱形继承
cout << "Size of VC: " << sizeof(VC) << endl; // 打印VC类型的内存大小
return 0;
}
```
希望这个程序能够帮到你。
阅读全文