50多重继承

简介: 50多重继承

C++入门——60s从0到1

多重继承

 

C++中,多重继承是指一个派生类从多个基类中继承属性和行为。多重继承可以减少代码的重复,提高代码的复用性。

 

多重继承的声明方式

 

声明一个多重继承的派生类的方式如下:

 

class DerivedClass : public BaseClass1, public BaseClass2 {

   // 成员列表

};

 

其中,`BaseClass1` 和 `BaseClass2` 是基类的名称。在 `:` 后列出所有基类的名称,中间用逗号分隔。

 

多重继承中的虚继承

 

在多重继承中,如果最后一个基类是虚拟继承的(使用 `virtual` 关键字),则派生类只需要保留一个基类对象的副本,而不是每个基类都保留一个副本。这可以节省内存空间。

 

class DerivedClass : public BaseClass1, public BaseClass2, virtual BaseClass3 {

   // 成员列表

};

 

在上面的例子中,`BaseClass3` 是虚拟继承的。这意味着派生类只需要保留一个 `BaseClass3` 的对象副本,而不是每个基类都保留一个副本。

 

多重继承中的命名冲突

 

当多重继承的派生类继承了多个基类中有相同名称的成员时,就会发生命名冲突。在这种情况下,需要使用作用域解析符(`::`)来指定使用哪个基类的成员。

 

class BaseClass1 {
public:
    void func() {
        std::cout << "BaseClass1::func()" << std::endl;
    }
};
 
class BaseClass2 {
public:
    void func() {
        std::cout << "BaseClass2::func()" << std::endl;
    }
};
 
class DerivedClass : public BaseClass1, public BaseClass2 {
public:
    void func() {
        // 使用作用域解析符来指定使用哪个基类的成员
        BaseClass1::func();   // 调用 BaseClass1 的 func() 函数
        BaseClass2::func();   // 调用 BaseClass2 的 func() 函数
    }
};

 

在上面的例子中,派生类 `DerivedClass` 同时继承了两个基类 `BaseClass1` 和 `BaseClass2`,它们都有一个名为 `func()` 的公有成员函数。为了区分这两个函数,我们需要在调用时使用作用域解析符来指定使用哪个基类的成员。

目录
相关文章
|
6月前
|
编译器 C++
48 C++ - 多继承
48 C++ - 多继承
31 0
|
6月前
|
C++
52 C++ - 纯虚函数和多继承
52 C++ - 纯虚函数和多继承
14 0
|
3月前
|
C++
C++多继承与多态
C++多继承与多态
6 0
|
4月前
|
存储 NoSQL 编译器
『 C++类与对象 』多态之单继承与多继承的虚函数表
『 C++类与对象 』多态之单继承与多继承的虚函数表
|
4月前
|
存储 NoSQL C++
『 C++类与对象 』多继承与虚继承
『 C++类与对象 』多继承与虚继承
|
4月前
|
C++
C++继承、多继承及菱形继承
C++继承、多继承及菱形继承
|
8月前
|
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 类,
53 0
|
9月前
|
C++
C++单继承和多继承
C++单继承和多继承
|
12月前
|
编译器 C++
C++中的多重继承
🐰多重继承 🌸声明多重继承的方法 🌸多重继承派生类的构造函数与析构函数 🌸多重继承引起的二义性
|
网络协议 测试技术 Go
多重继承介绍|学习笔记
快速学习多重继承介绍
62 0