向上转型

类其实也是一种数据类型,也可以发生数据类型转换,不过这种转换只有在基类和派生类之间才有意义,并且只能将派生类赋值给基类。
派生类对象赋值给基类对象、将派生类指针赋值给基类指针、将派生类引用赋值给基类引用,这在 C++ 中称为向上转型(Upcasting)。
反之,将基类赋值给派生类称为向下转型(Downcasting)。
向上转型非常安全,可以由编译器自动完成;向下转型有风险,需要程序员手动干预。

#include <iostream>

using namespace std;

class A
{
public:
    int a;
};

class B : public A
{    
public:
    int b;
};

class C
{    
public:
    int c;
};

class D : public B, public C
{    
public:
    int d;
};

int main()
{
    D *d = new D;
    A *a = d;
    B *b = d;
    C *c = d;

    cout << d << endl;
    cout << a << endl;
    cout << b << endl;
    cout << "注意多继承:" << c << endl;

    return 0;
}

输出:
0x1717d0
0x1717d0
0x1717d0
注意多继承:0x1717d8

 

posted @ 2023-06-15 11:01  jason8826  阅读(20)  评论(0)    收藏  举报