C++之构造函数与析构函数

最近在学习C++,每次看到继承这段的时候,总是一边感慨这门语言的难度,一边感慨这门语言的神奇之处。最近看到了构造函数这段,问了自己这样一个问题,构造函数可以是虚函数吗?不是很清楚,于是去查了一些资料。

首先我觉得应该明确的一个问题就是,虚函数的功能是C++中多态的一种实现方式。主要是继承类的某些功能和基类的某些功能会在实现方式上不同,因此需要重新定义,而我们在调用的时候又希望不要去区分调用的是基类的还是继承类的,于是产生了这样的一个机制。但是对于构造函数来说,却不能够定义成一个虚函数,下面我们从下面两个方面来说明之:

从存储空间的角度:虚函数对应一个虚函数表,而这个虚函数表是存储在实例对象的内存中的。若构造函数是虚函数,那么我们如果想调用构造函数,则必须先找到这个虚函数表,而此时实例还没有创建成功,因此就不能够找到构造函数。

从使用的角度来看,虚函数的主要作用就是在信息不全的情形下,使得重载的函数得到对应的调用,构造函数本身就是要初始化实例,使用虚函数也没有实际的意义,因此构造函数没有必要时虚函数。


而与构造函数相对应的析构函数则不同,可以是虚函数。甚至在很多的情形下,析构函数最好能够定义成虚函数,这样在析构的时候,我们总是能够调用到正确的析构函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值