当我们声明/定义了一个虚函数时候,派生类可以选择覆盖这个虚函数,也可以选择不覆盖。关于这一点,C++也提供了必要的方法,来要求派生类覆盖某些方法,这也可以看作是一种对将来编程。
纯虚函数
这并不是一个新技术,功能也非常简单:就是一旦某个基类声明了某个纯虚函数,它的派生类在实例化的时候就必须覆盖这个函数。
本例中注释掉了sub::f1()方法,所以在第27行就会发生编译错误。
final说明符
一般说来,有要求的覆盖的方法,就应该有禁止覆盖的手段。但是不知道为什么,这个功能到了C++11中才被引入。使用方法也很简单:只要在函数声明的后面添加final说明符即可。
代码基本没变,只是base::f1()声明的后面换成了final说明符。这时如果定义了sub::f1()方法,就会产生如上图的编译错误。
作者观点
本文根据作者个人的理解,将纯虚函数和final说明符放到一起说明。如有不准确之处,欢迎补充和纠正。
相关文章:
C++11新特性中auto 和 decltype 区别和联系
相关视频:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。