手机
当前位置:查字典教程网 >编程开发 >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++中string类成员函数c_str()的用法

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

C++类静态成员与类静态成员函数详解

虚函数与纯虚函数(C++与Java虚函数的区别)的深入分析

c++基础语法:构造函数与析构函数

精品推荐
分类导航