c++中的虚函数

1.为什么c++没有虚构造函数?

因为构造函数是在对象完全构造之前运行的,在构造函数运行的时候,对象的动态类型还不完整。

2.为什么c++中赋值操作符不是虚函数?

将类的复制操作符设为虚函数很可能会令人混淆,而且没有什么好处。

在基类中将operator=定义为虚函数,并不会影响派生类中使用的赋值操作符。每个类都有自己的赋值操作符,派生类中的赋值操作符有一个与类本身类型相同的形参,该类型必须不同于继承层次中的任意其他类的赋值操作符的形参类型。

3.虚函数的使用

i.静态函数不能为虚函数,因为静态函数是被一个类的各个对象共有的,它不会因为继承而改变。

ii.inline函数不能为虚函数,因为inline不能在运行中确定其位置。

iii.虚函数有一定的空间开销。当一个类拥有虚函数时,编译器会构造一个虚函数表,用于存放虚函数的地址。

参考:

http://shaxquan.blog.51cto.com/751410/384555

4.虚函数的实现机制

虚函数在c++中的实现机制就是用虚表和虚指针

更具体请参考:

http://blog.csdn.net/jiangnanyouzi/article/details/3720807

5.析构函数是虚函数的优点是什么?

为了当用一个基类的指针删除一个派生类的对象时,派生类的析构函数会被调用。

详细原因请参考:

http://www.cppblog.com/franksunny/archive/2008/05/19/50424.aspx



转载于:https://www.cnblogs.com/woshizyl/archive/2012/09/04/2800348.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值