虚函数被类的构造析构函数和成员函数调用虚函数的执行过程
#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;
}
会有这样的输出
即使func1是虚函数,在base类和derived的构造函数和析构函数里面,都是调用自己类里面的func1。
而在普通成员函数func2调用func1,就会走虚函数的流程。
相关文章
- 这篇文章主要介绍了C#虚函数用法,实例分析了C#中虚函数的功能与基本使用技巧,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了C++ 虚函数的相关资料,帮助大家更好的理解和学习c++,感兴趣的朋友可以了解下...2020-09-14
- 这篇文章主要介绍了C++ 虚函数 virtual的相关资料,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-24
- 这篇文章主要介绍了C++编程中virtual声明的虚函数以及单个继承,剖析虚函数和单个基类所能够继承的成员,要的朋友可以参考下...2020-04-25
- 对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)和一个指向虚函数表的指针(vptr)来实现的...2020-04-25
- 这篇文章主要介绍了C++纯虚函数与抽象类的相关资料,帮助大家更好的理解和学习c++,感兴趣的朋友可以了解下...2020-08-13
- 虚函数被类的构造析构函数和成员函数调用虚函数的执行过程,需要的朋友可以参考下...2020-04-25
- 众所周知探索c++对象内部的实现是一件非常有趣的事情,虚函数在c++中的实现机制就是用虚表和虚指针,但是具体是怎样的呢?下面这篇文章就来给大家实际检验一下 Visual Studio 2013 编译器在无优化条件下,虚函数的实现。有需要的朋友们可以参考借鉴,下面来一起看看吧。...2020-04-25
- 这篇文章主要介绍了C++ 多态的实现及原理,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了C++ 多态和虚函数的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-09
- 这篇文章主要给大家介绍了关于C++中继承与多态的基础虚函数类的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。...2020-04-25
- 这篇文章主要介绍了详解C++编程中的虚函数,包括在什么情况下应当声明虚函数的相关讲解,需要的朋友可以参考下...2020-04-25
- 若一个实例方法声明前带有virtual关键字,那么这个方法就是虚方法。...2020-06-25
- 这篇文章主要介绍了c++ 虚函数,虚表的的相关资料,帮助大家更好的理解和学习使用c++,感兴趣的朋友可以了解下...2021-03-01
- 这篇文章主要介绍了C++虚函数及虚函数表,内容非常详细,思路清晰,需要的朋友可以参考下...2020-04-25
- 构造函数不需要是虚函数,也不允许是虚函数,因为创建一个对象时我们总是要明确指定对象的类型,尽管我们可能通过实验室的基类的指针或引用去访问它但析构却不一定,我们往往通过基类的指针来销毁对象...2020-04-25
- C++是面向对象的语言(与C语言主要区别),所以C++也拥有多态的特性。下面通过代码看下C++虚函数表的问题,感兴趣的朋友一起看看吧...2021-10-18
- 这篇文章主要介绍了C++中的虚函数,在C++中,虚函数联系到多态、多态联系到继承,因而虚函数是C++中的一大重要特性,需要的朋友可以参考下...2020-04-25
- 下面小编就为大家带来一篇探讨C++中不能声明为虚函数的有哪些函数。希望对大家有所帮助。一起跟随小编过来看看吧,祝大家游戏愉快哦...2020-04-25
- 这篇文章主要介绍了C++ 虚函数的详解及简单实例的相关资料,需要的朋友可以参考下...2020-04-25