C++学习笔记-virtual method

C++学习笔记-virtual method

虚函数或虚方法(virtual method)在CPP13章第3节首次提到。

在通过引用指针而不是直接用对象调用方法时,如果基类的方法没有使用关键词 virtual ,程序将根据引用类型或指针类型选择方法;如果使用了virtual,程序将根据引用或指针指向的对象类型来选择方法。

通俗来讲,如果要在派生类中重新定义基类方法的话,最好在基类中定义为虚方法。析构函数一般也定义成虚方法。不然使用指针或引用时可能会错误地调用方法(通过对象的话不会)。

用法:

  1. virtual 只用于原型声明中,不用于定义中。
  2. 构造函数不能是虚函数。构造函数与其他函数的继承机制不同。从存储空间角度看,如果构造函数是虚函数的话,继承的子对象需要一个指向虚函数表的指针,但是在构造函数执行前对象还没有实例化,就不会有地方来存储这个指针,也就找不到虚函数表,进而没有构造函数的地址,无法执行。
  3. 析构函数应该是虚函数。因为析构函数应当释放子类的新成员的内存(如果有的话)
  4. 友元不能是虚函数,因为友元不是类成员。

主要参考CPP的第13章。

转载于:https://www.cnblogs.com/amaduse/p/10704930.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值