C ++ Advanced (7) - Héritage et dérivation 4

Conversion de classe de base et de type de classe dérivée

Conversion de type

  • Les objets de classe dérivés publics peuvent être utilisés comme objets de classe de base, mais pas l'inverse.
    • Les objets des classes dérivées peuvent être implicitement convertis en objets de la classe de base;
    • Les objets des classes dérivées peuvent initialiser des références à la classe de base;
    • Un pointeur d'une classe dérivée peut être converti implicitement en un pointeur d'une classe de base.
  • Seuls les membres hérités de la classe de base peuvent être utilisés via le nom et le pointeur de l'objet de la classe de base.

Exemples de règles de conversion de type

#include <iostream>
using namespace std;
class Base1 { //基类Base1定义
public:
    void display() const {
        cout << "Base1::display()" << endl;
    }
};
class Base2: public Base1 { //公有派生类Base2定义
public:
    void display() const {
        cout << "Base2::display()" << endl;
    }
};
class Derived: public Base2 { //公有派生类Derived定义
public:
    void display() const {
        cout << "Derived::display()" << endl;
    }
};
void fun(Base1 *ptr) {  //参数为指向基类对象的指针
    ptr->display();     //"对象指针->成员名"
}
int main() {    //主函数
    Base1 base1;    //声明Base1类对象
    Base2 base2;    //声明Base2类对象
    Derived derived;    //声明Derived类对象

    fun(&base1);    //用Base1对象的指针调用fun函数
    fun(&base2);    //用Base2对象的指针调用fun函数
    fun(&derived); //用Derived对象的指针调用fun函数

    return 0;
}

 

Je suppose que tu aimes

Origine blog.csdn.net/qq_41023026/article/details/108568768
conseillé
Classement