虚函数构造和析构函数执行顺序总结

本文详细介绍了C++中虚函数、纯虚函数的定义、格式及两者之间的不同点,并通过多个例题阐述了虚函数在构造和析构过程中的执行顺序,强调了析构函数声明为虚函数的重要性。
摘要由CSDN通过智能技术生成

一.定义

虚函数: 在某基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数,可实现函数成员的动态重载。

纯虚函数: 纯虚函数是一种特殊的虚函数,在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类去做。含有纯虚函数的类被称为抽象类(abstract class)


二.格式

虚函数:virtual <函数返回类型>< 函数名>(<参数表>) {函数体};

纯虚函数:virtual <函数返回类型><函数名>(<参数表>)=0;

三.不同点

1.虚函数可以直接使用,也可以在子类中重载以多态的形式调用,但纯虚函数在基类中只有声明没有定义,所以只能在子类中实现了该函数才可以以多态的形式调用。 
2.虚函数在子类中可以不被重载,但是纯虚函数必须在子类中实现。 
3.包含纯虚函数的类成为抽象类,这种类不能声明对象,只是作为基类为派生类服务。除非在派生类中完全实现基类中所有的的纯虚函数,否则,派生类也变成了抽象类,不能实例化对象。

虚函数以及构造函数执行顺序的一些特性(例题)

构造函数:先构造基类,再构造派生类;

析构函数:先析构派生类,再析构基类。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 C++ ,当创建对象时,首先会调用该类的构造函数来初始化对象成员变量和数据成员。而当对象被销毁时,会自动调用析构函数来清理对象并释放相关资源。 构造函数和析构函数的调用顺序与对象的创建和销毁顺序密切相关。对于单个对象,构造函数的调用先于析构函数。而对于多个对象,它们的构造函数和析构函数的调用顺序则取决于它们的创建和销毁顺序。 具体来说,创建对象时,构造函数的调用顺序按照成员变量的声明顺序进行,即先调用基类构造函数,再调用成员变量的构造函数,最后调用自身的构造函数。而销毁对象时,析构函数的调用顺序则与构造函数相反,即先调用自身的析构函数,再调用成员变量的析构函数,最后调用基类析构函数。 需要注意的是,如果一个类是另一个类的成员变量,则其构造函数和析构函数的调用顺序取决于它们在类的声明顺序。如果一个类是另一个类的基类,则其构造函数和析构函数的调用顺序与继承方式有关。如果是虚继承,则先调用最远的祖先类的构造函数,再依次调用间类和自己的构造函数;而析构函数的调用顺序则相反,先调用自己的析构函数,再依次调用间类和最远的祖先类的析构函数。 总之,构造函数和析构函数的调用顺序是 C++ 一个非常重要的概念,需要开发者在编写程序时仔细考虑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值