C++的多重继承

简介: 有如下的C++代码 #include using namespace std;class Base{public: Base(int i) {cout

有如下的C++代码

 
 
#include < iostream >
using namespace std;
class Base
{
public :
Base(
int i) {cout << " Base constructor called " << i << endl;}
~ Base( void ) {cout << " Base destructor called " << endl;}
};

class Base1: public Base
{
public :
Base1(
int i, int j):Base(j) {cout << " Base1 constructor called " << i << endl;}
~ Base1( void ) {cout << " Base1 destructor called " << endl;}
};

class Base2
{
public :
Base2(
int i) {cout << " Base2 constructor called " << i << endl;}
~ Base2( void ) {cout << " Base2 destructor called " << endl;}
};

class Base3
{
public :
Base3(
int i) {cout << " Base3 constructor called " << i << endl;}
~ Base3( void ) {cout << " Base3 destructor called " << endl;}
};

class Derived: public Base2, public Base1, public Base3
{
Base3 member3; Base1 member1; Base2 member2; Base member;
public :
Derived(
int i, int a, int b, int c, int d, int e, int f, int g)
:Base1(g,a),member2(e),member1(g,d),Base2(b),member3(f),Base3(c),member(i)
{
cout
<< " Derived constructor called " << i << endl;
}
~ Derived( void ) {cout << " Derived destructor called " << endl;}
};

int main()
{
Derived objD(
1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
return 0 ;
}

用 $ g++ -Wall -o base1 base1.cpp 进行编译

运行 $ ./base1 结果为

img_dfeae768ae27f0c90586ea38bb9e5ec5.png

相关文章
|
6月前
|
C++
C++程序中的多重继承
C++程序中的多重继承
65 1
|
4月前
|
编译器 C++ 开发者
C++一分钟之-多重继承与菱形问题
【7月更文挑战第19天】C++的多重继承允许类从多个基类派生,但引入了菱形问题,即类D通过B和C(都继承自A)双重继承A,可能导致数据冗余和二义性。解决这个问题的关键是**虚继承**,通过`virtual`关键字确保基类A只被继承一次,消除冲突。理解并适当使用虚继承是处理这类问题的关键,有助于保持代码的清晰和正确性。
57 0
|
6月前
|
设计模式 编译器 数据安全/隐私保护
C++ 多级继承与多重继承:代码组织与灵活性的平衡
C++的多级和多重继承允许类从多个基类继承,促进代码重用和组织。优点包括代码效率和灵活性,但复杂性、菱形继承问题(导致命名冲突和歧义)以及对基类修改的脆弱性是潜在缺点。建议使用接口继承或组合来避免菱形继承。访问控制规则遵循公有、私有和受保护继承的原则。在使用这些继承形式时,需谨慎权衡优缺点。
94 1
|
6月前
|
C++
[C++/PTA] 日程安排(多重继承+重载)
[C++/PTA] 日程安排(多重继承+重载)
185 0
|
Java 编译器 PHP
C++的多重继承
派生类都只有一个基类,称为单继承(Single Inheritance)。除此之外,C++也支持多继承(Multiple Inheritance),即一个派生类可以有两个或多个基类。 多继承容易让代码逻辑复杂、思路混乱,一直备受争议,中小型项目中较少使用,后来的 Java、C#、PHP 等干脆取消了多继承。 多继承的语法也很简单,将多个基类用逗号隔开即可。例如已声明了类A、类B和类C,那么可以这样来声明派生类D: class D: public A, private B, protected C{ //类D新增加的成员 } D 是多继承形式的派生类,它以公有的方式继承 A 类,
|
编译器 C++
C++中的多重继承
🐰多重继承 🌸声明多重继承的方法 🌸多重继承派生类的构造函数与析构函数 🌸多重继承引起的二义性
|
Java 编译器 Android开发
Android C++系列:C++最佳实践4多重继承与虚继承
Java和C++在语法层面比较的时候就不得不提到C++的多继承,我们知道Android是单继承,C++是多继承。在大型项目中不可避免的会用到多继承,本文分析C++多继承的一些特征。
139 0
|
Java C++
C++继承与派生解析(继承、重载/转换运算符、多重继承、多态、虚函数/纯虚函数、抽象类)
C++继承与派生解析(继承、重载/转换运算符、多重继承、多态、虚函数/纯虚函数、抽象类)
194 0
C/C++---Person类、学生类、教师类和研究生类(多重继承)
C/C++---Person类、学生类、教师类和研究生类(多重继承)
898 0