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

简介:

摘要:

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

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

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

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

相关文章
|
1月前
|
自然语言处理 算法 Java
C/C++ 程序员编程规范之注释
C/C++ 程序员编程规范之注释
43 1
|
1月前
|
XML 安全 IDE
【C/C++ 实用工具】CppCheck:静态代码检测工具,让你的代码更安全
【C/C++ 实用工具】CppCheck:静态代码检测工具,让你的代码更安全
43 2
|
测试技术 数据库 安全
带你读《C++代码整洁之道:C++17 可持续软件开发模式实践》之二:构建安全体系
如果想用C++语言编写出易维护的、扩展性良好的以及生命力强的软件,那么,对于所有的软件开发人员、软件设计人员、对现代C++代码感兴趣或想降低开发成本的项目领导者来说,本书都是必需品。如果你想自学编写整洁的C++代码,那么本书也是你需要的。本书旨在通过一些示例帮助各个技术层次的开发人员编写出易懂的、灵活的、可维护的和高效的C++代码。即使你是一名资深的开发工程师,在本书中也可以找到有价值的知识点。
|
1月前
|
存储 安全 算法
【C++ 17 新特性 】拥抱现代C++:深入C++17特性以获得更高效、更安全的代码
【C++ 17 新特性 】拥抱现代C++:深入C++17特性以获得更高效、更安全的代码
77 1
|
1月前
|
程序员 开发工具 C++
C/C++ 程序员编程规范之排版
C/C++ 程序员编程规范之排版
31 1
|
3月前
|
安全
C++11线程安全队列和安全栈
C++11线程安全队列和安全栈
29 0
|
5月前
|
Web App开发 存储 Linux
Linux C/C++开发(后端/音视频/游戏/嵌入式/高性能网络/存储/基础架构/安全)(下)
Linux C/C++开发(后端/音视频/游戏/嵌入式/高性能网络/存储/基础架构/安全)
|
5月前
|
存储 Linux 调度
Linux C/C++开发(后端/音视频/游戏/嵌入式/高性能网络/存储/基础架构/安全)(上)
Linux C/C++开发(后端/音视频/游戏/嵌入式/高性能网络/存储/基础架构/安全)
|
8月前
|
编译器 C++
【C++】实用编程规范与建议
C++ 相关,比较实用的 防止疏漏出错的编码规范与编码建议
111 0
|
9月前
|
存储 设计模式 算法
03-📝C++核心语法|面向对象1【 C++编程规范、类和对象、面向对象程序设计案例、对象的构造和析构、C++面向对象模型初探】
复习`C++核心语法`,且适当进行汇编探索底层实现原理,进一步夯实基础,为以后的`底层开发`、`音视频开发`、`跨平台开发`、`算法`等方向的进一步学习埋下伏笔。
03-📝C++核心语法|面向对象1【 C++编程规范、类和对象、面向对象程序设计案例、对象的构造和析构、C++面向对象模型初探】

热门文章

最新文章