虚函数被类的构造析构函数和成员函数调用虚函数的执行过程
虚函数被类的构造析构函数和成员函数调用虚函数的执行过程
发布时间:2016-12-28 来源:查字典编辑
摘要:复制代码代码如下:#includeclassbase{public:base(){std::cout

复制代码 代码如下:

#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;

}

会有这样的输出

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

即使func1是虚函数,在base类和derived的构造函数和析构函数里面,都是调用自己类里面的func1。

而在普通成员函数func2调用func1,就会走虚函数的流程。

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新C语言学习
热门C语言学习
编程开发子分类