手机
当前位置:查字典教程网 >编程开发 >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++中的函数指针与函数对象的总结

精品推荐
分类导航