C++第08课 虚函数和多态 (二)

时间:2021-09-06
本文章向大家介绍C++第08课 虚函数和多态 (二),主要包括C++第08课 虚函数和多态 (二)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1.虚析构函数

class MM {
public:
    virtual void print() {
        cout << "MM" << endl;
    }
    virtual ~MM() {
        cout << "~MM" << endl;
    }
};
class Girl:public MM {
public:
    void print() {
        cout << "Girl" << endl;
    }
    ~Girl() {
        cout << "~Girl" << endl;
    }
};

int main()
{
    //下面的无名Girl对象没有被释放
    MM* pmm = new Girl;
    pmm->print();    //Girl
    //加了virtual打印 ~Girl
    delete pmm;        //~MM

    return 0;
}

2.dynamic_cast

  作用:上行转换、下行转换、交叉转换

class A
{
public:
    virtual void print() { cout << "A" << endl; }
};
class B
{
public:
    virtual void print() { cout << "B" << endl; }
};
class C :public A, public B
{
public:
    void print() { cout << "C" << endl; }
};
void test()
{
    //子类对象初始化父类指针
    A* pa = new C;
    B* pB = dynamic_cast<B*>(pa);
    pB->print();    //C
}

int main()
{
    test();
    return 0;
}

原文地址:https://www.cnblogs.com/creature-lurk/p/15235683.html