关闭

virtual--总是忘记的逻辑关系

标签: includedeleteclass
240人阅读 评论(0) 收藏 举报
分类:

#include <iostream>
using namespace std;
class A
{
    public:
        A(){cout << "This is A" << endl;}
        virtual ~A(){cout << "This is ~A" << endl;}
        virtual void PureV()= 0;
        virtual void boo() {cout << "A::boo" << endl;}
        void foo() {bar();}
    private:
        virtual void bar(){cout << "A::bar" << endl;}
};
class B: public A
{
    public:
        B(){cout << "This is B" << endl;}
        virtual ~B(){cout << "This is ~B" << endl;}
        void PureV() {cout << "B::PureV" << endl;}
        void boo() {cout << "B::boo" << endl;}
    private:
        virtual void bar(){cout << "B::bar" << endl;}
};
int main()
{
    A* a = new B();
    a->PureV();
    a->boo();
    a->foo();
    delete a;
    return 0;
}

输出顺序:

This is A
This is B
B::PureV
B::boo
B::bar
This is ~B
This is ~A

基础的东西很奇妙~

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:18120次
    • 积分:363
    • 等级:
    • 排名:千里之外
    • 原创:16篇
    • 转载:9篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论