虚析构函数、纯虚析构函数、虚构造函数

本文详细解释了虚析构函数的概念及其在C++中的使用场景。重点介绍了如何通过虚析构函数确保派生类对象被正确销毁的过程,尤其是在通过基类指针删除派生类对象时的重要性。

虚析构函数:

为了能够正确的调用对象的析构函数,一般要求具有层次结构的顶级类定义其析构函数为虚函数。因为在delete一个抽象类指针时候,必须要通过虚函数找到真正的析构函数。

class Base
{
public:
Base(){}
virtual ~Base(){}
};

class Derived: public Base
{
public:
Derived(){};
~Derived(){};
}

void foo()
{
Base *pb;
pb = new Derived;
delete pb;
}

算了  人家写的太好了  直接贴上URL

http://blog.jobbole.com/108492/点击打开链接

函数是C++中实现多态的重要机制之一。在C++中,如果一个函数在基类中被声明为函数(virtual),那么在派生类中重写这个函数时,可以通过基类的指针或引用来调用派生类中重写后的函数实现,而不是基类的函数实现。这样,基类指针或引用可以指向不同类型的对象,而调用的函数是对象实际类型的方法,从而实现运行时多态。 基类是为了解决多重继承中可能出现的菱形继承(钻石继承)问题而引入的。当一个派生类从两个或多个基类派生,而这些基类又有一个共同的基类时,如果没有特殊的处理,那么共同基类的成员会在派生类中出现多份拷贝。通过将共同基类声明为基类,可以保证在最终派生类中共同基类只有一个实例,从而避免了成员重复和不确定性问题。 虚析构函数是当一个类中存在函数时,通常将析构函数声明为函数。这样,当通过基类的指针删除派生类对象时,可以确保调用正确的析构函数,即派生类的析构函数会被调用,然后再调用基类的析构函数。如果不将析构函数声明为函数,则只会调用基类的析构函数,可能导致派生类资源未被正确释放。 至于虚构造函数,C++标准中并不存在虚构造函数的概念。构造函数的职责是创建对象,而函数机制主要用于对象存在并已经初始化之后的多态行为。在C++中,创建对象时需要明确知道对象的类型,不能通过基类指针或引用来动态构造一个对象,因为这违反了多态的使用原则。如果需要创建派生类对象,应该使用基类指针或引用,并通过工厂模式、智能指针等方式来实现,而不是虚构造函数
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值