zoukankan      html  css  js  c++  java
  • 虚函数、多态 相关 ,简单例子

    看c++教程中,总少不了的一块。

    虚函数,动态绑定相关,测试代码如下:

    class Bbb
    {
    public:
        int m;
    public:
        Bbb() :m(8){};
         /*virtual*/ ~Bbb()
        {
            cout << "de bbb" << endl;
        }
         virtual void pp() /*= 0;*/
        {
            cout << "bbbb:" << m << endl;
        }
    private:

    };
    class Dd : public Bbb
    {
    public:
        int m;
    public:
        Dd() :m(9){};
        ~Dd()
        {
            cout << "de ddd" << endl;
        }
         virtual void pp()
         {
             cout <<"dddd:"<< m << endl;
         }
    };


    void funtt(Bbb &iv)
    {
        cout << "ffff:" << iv.m << endl;
        iv.pp();
    }


    int _tmain(int argc, _TCHAR* argv[])
    {
        Bbb *pB;
        pB = new Dd();
        delete pB;

        Dd * pdd;
        pdd = new Dd();
        delete pdd;

        {
            Dd dd;
            int isssizedd = sizeof(dd);
            cout << "main:" << dd.m << endl;
            funtt(dd);
        }
    }

    输出结果如下:

    //de bbb
    //de ddd
    //de bbb
    //main:9
    //ffff:8
    //dddd:9
    //de ddd
    //de bbb

    如果基类中的那个虚函数定义为纯虚的话,输出结果不变。

    有一点加强下记忆的是,多态时候 那个虚函数调用的属性值是指针静态类型的值,对应测试输出语句是“//ffff:8”。

    对于基类对象和派生类对象直接转换什么的,得再专门看下。。

  • 相关阅读:
    10/11
    el表达式的坑
    在idea下两个项目之间的maven父子级项目依赖
    树上任意两点间距离
    优先级顺序
    HDU 6447
    KMP
    cf 1029 C
    牛客练习赛25
    莫比乌斯算法
  • 原文地址:https://www.cnblogs.com/xiarl/p/3436081.html
Copyright © 2011-2022 走看看