zoukankan      html  css  js  c++  java
  • 构造函数中调用virtual 函数

    #include<iostream>
    using namespace std;
    class myclass
    {
    public:
        virtual void hello(){cout<<"hello from myclass"<<endl;}
        virtual void bye(){cout<<"bye from myclass"<<endl;}
    };
    class son:public myclass
    {
    public:
        void hello(){cout<<"hello from my son"<<endl;};
        son(){hello();};
        ~son(){bye();};
    };
    class grandson:public son
    {
    public:
        void hello(){cout<<"hello from grandson"<<endl;};
        grandson(){cout<<"constructing grandson"<<endl;};
        ~grandson(){cout<<"destructing grandson"<<endl;};
    };
    int main()
    {
        grandson gson;
        son*pson;
        pson=&gson;
        pson->hello();
        return 0;
    }
    

     运行结果

    1 gson 先创建 son son() 中静态链接 son::hello()
    2 gson 创建
    3 gson->hello() 动态连接到 grandson::hello()
    4 gson 的析构函数
    5 gson 中 son 的析构,~son 链接到 myclass() ::bye()

    在构造函数和析构函数中调用虚函数时 他们调用的函数是自己的类或基类中定义的函数 不会等到运行时 才决定调用自己还是派生的函数

  • 相关阅读:
    hdu 4597 记忆化搜索
    hdu 4494 最小费用流
    hdu 4598 差分约束
    poj 3621 0/1分数规划求最优比率生成环
    poj 1695 动态规划
    noi 97 积木游戏
    hdu 4705 排列组合
    洛谷P2014 选课
    洛谷P1776 宝物筛选
    洛谷P1782 旅行商的背包
  • 原文地址:https://www.cnblogs.com/guoyu1024/p/9057987.html
Copyright © 2011-2022 走看看