使用纯虚函数的一个小细节——派生类定义该虚函数时声明语句必须与基类里完全一致

问题描述:纯虚函数在派生类里明明补写出来了定义,但是实际发现是无效的,派生类因没有定义该纯虚函数同样被编译器视为了抽象类。

原因很有可能是:基类和派生类的虚函数必须类型、名字、参数数量、名字、类型、以及函数前后缀的各种其他属性(比如const等)必须完全一致!否则会被认为不是同一个函数。无法产生“覆盖”的效果,而可能仅仅是“重载”,这样就会有各种意想不到的问题了。比如我便是在派生类里重写该纯虚函数时末尾没有加const,从而产生了文章开头的问题。

另外一个需要注意的现象是:

在派生类定义里对应函数开头加上virtual也不行。注意,在派生类里详细定义该函数时加virtual可以加、也可以不加。在派生类里外详细定义该函数时加virtual似乎反而会报错。注意这个情况。(可以参考:https://blog.csdn.net/wuchuanpingstone/article/details/6880093

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值