C++编程规范之38:实施安全的覆盖

简介:

摘要:

    负责任地进行覆盖:覆盖一个虚拟函数时,应该保持可替换性;说得更具体一点,就是要保持基类中函数的前后置条件。不要改变虚拟函数的默认参数。应该显式地将覆盖函数重新声明为virtual.

    虽然派生类通常会增加更多状态,但他们所建模的是其基类的子集而非超集。在正确的继承关系中,派生类所建模的是更一般的基础概念的一个特例。

    定义一个可能的失败的派生覆盖函数,只是在基类没有声明换做总是成功的时候,这个定义才是正确的。在覆盖的时候,永远不要修改默认参数。它们不是函数签名的一部分,客户代码将因为不知情而将不同参数传递给函数,具体要传递给哪一个参数,将取决于它们具有层次结构中那个节点的访问权限。

对于调用者而言,同一个对象的成员函数会不加提示地根据自己访问所使用的静态类型而接受不同参数,这可能是一件非常令人奇怪的事情。在覆盖函数时,应该添加冗余的virtual.这能够更清楚地想阅读代码的人表达自己的意图。谨防不小心在基类中隐藏了重载函数。关于重载、覆盖、隐藏的概念区分详见:http://blog.csdn.net/longshengguoji/article/details/17691913

相关文章
C/C++ 程序员编程规范之注释
C/C++ 程序员编程规范之注释
340 1
|
10月前
|
【C/C++ 实用工具】CppCheck:静态代码检测工具,让你的代码更安全
【C/C++ 实用工具】CppCheck:静态代码检测工具,让你的代码更安全
1546 2
带你读《C++代码整洁之道:C++17 可持续软件开发模式实践》之二:构建安全体系
如果想用C++语言编写出易维护的、扩展性良好的以及生命力强的软件,那么,对于所有的软件开发人员、软件设计人员、对现代C++代码感兴趣或想降低开发成本的项目领导者来说,本书都是必需品。如果你想自学编写整洁的C++代码,那么本书也是你需要的。本书旨在通过一些示例帮助各个技术层次的开发人员编写出易懂的、灵活的、可维护的和高效的C++代码。即使你是一名资深的开发工程师,在本书中也可以找到有价值的知识点。
|
10月前
|
【C++ 17 新特性 】拥抱现代C++:深入C++17特性以获得更高效、更安全的代码
【C++ 17 新特性 】拥抱现代C++:深入C++17特性以获得更高效、更安全的代码
3005 1
C/C++ 程序员编程规范之排版
C/C++ 程序员编程规范之排版
122 1
|
10月前
|
C++11线程安全队列和安全栈
C++11线程安全队列和安全栈
127 0

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等