c++引用指向对象的问题

#include <iostream>
using namespace std;
class A
{
public:
    void func1()
    {
        cout << "A1" << endl;
    }
    virtual void func2()
    {
        cout << "A2" << endl;
    }
};
class B : public A
{
public:
    void func1()
    {
        cout << "B1" << endl;
    }
    void func2()
    {
        cout << "B2" << endl;
    }
};

int main()
{
    A *a = new B;
    a->func1();
    a->func2();
}

下面是输出

img


A *a = new B这个是什么意思 书上也没有写 那么这个输出是怎么来的

就是用基类的指针指向子类对象
由于func1不是虚函数,因此实际执行的是基类的func1函数
由于func2是虚函数,因此实际执行的是子类的fun2函数
这个代码就是来体现类的多态性的样例代码。
通过基类指针,指向具体的某个子类对象,在调用虚函数时,多态性会自动调用具体子类的函数,而不是基类的函数。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632