源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

虚函数被类的构造析构函数和成员函数调用虚函数的执行过程

  • 时间:2022-08-17 12:15 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:虚函数被类的构造析构函数和成员函数调用虚函数的执行过程
[u]复制代码[/u] 代码如下:
#include<iostream> class base{ public:     base()     {         std::cout<<std::endl;         std::cout<<"base constructor"<<std::endl;         func1();         std::cout<<std::endl;     }     virtual ~base()     {         std::cout<<std::endl;         std::cout<<"base distructor"<<std::endl;         func1();         std::cout<<std::endl;     }     virtual void func1()     {         std::cout<<"base virtural func1"<<std::endl;     }     void func2()     {         std::cout<<"base member func2"<<std::endl;         func1();         std::cout<<std::endl;     } }; class derived:public base{ public:     derived()     {         std::cout<<std::endl;         std::cout<<"derived constructor"<<std::endl;         func1();         std::cout<<std::endl;     }     virtual ~derived()     {         std::cout<<std::endl;         std::cout<<"derived distructor"<<std::endl;         func1();         std::cout<<std::endl;     }     virtual void func1()     {         std::cout<<"derived virtual func1"<<std::endl;     } }; int main() {     base *point = new derived();     point->func2();     delete point;     return 0; }
会有这样的输出 [img]http://files.jb51.net/file_images/article/201302/2013218114851252.jpg[/img] 即使func1是虚函数,在base类和derived的构造函数和析构函数里面,都是调用自己类里面的func1。 而在普通成员函数func2调用func1,就会走虚函数的流程。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部