手机
当前位置:查字典教程网 >编程开发 >C语言 >虚函数被类的构造析构函数和成员函数调用虚函数的执行过程
虚函数被类的构造析构函数和成员函数调用虚函数的执行过程
摘要:复制代码代码如下:#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++函数的相互引用

C++中拷贝构造函数的总结详解

递归法求最大公约数和最小公倍数的实现代码

关于C++静态成员函数访问非静态成员变量的问题

C++虚析构函数的使用分析

C++指向类成员函数的指针详细解析

C++中的函数指针与函数对象的总结

c++中string类成员函数c_str()的用法

一般函数指针和类的成员函数指针深入解析

精品推荐
分类导航