Effective C++ 条款40 多重继承 条款40 : 明智而审慎地使用多重继承 相比于java选择单继承+接口类多继承的方式, C++选择了更加直接的方式, 其允许多重继承存在. 不可否认的是确实大多数情况下单继承都可以胜任, 但是同样不可否认的是多重继承也一定有其用武之地. 在本条款中, 我们将认识多重继承, 了解辅助其实现的虚继承机制, 并且知晓多重继承的主要应用场景. 多重继承的意思是继承一个以上的基类, 一般来说我们不希望这些 2025-01-01 #继承 #Effectiv C++
Effective C++ 条款38-39 复合和private继承 条款38 : 通过复合塑膜出has-a或”根据某物实现出” 在条款32中我们认识了public继承意味着is-a, 本条款将会认识两个新的关系, 均可通过”复合”这一操作实现出来. 复合所谓复合, 就是某种类型的对象内含其他类型的对象, 其实非常容易理解, 我们通过代码理解 : 123456789101112class Address { ... }; 2024-12-29 #Effective C++ #继承
Effective C++ 条款36-37 两个绝不 条款36 : 绝不重新定义继承而来的non-virtual函数本条款很容易理解, 援引以前的条款就可以说明为什么 : 条款34中就提到过 : non-virtual函数意味着接口 + 强制性实现继承, 它不应当被改变. 重新定义继承而来的non-virtual函数会触发条款33中所说的遮掩机制. 触发遮掩机制其实是对条款32中”public意味着is-a“这个定理的破坏. 如果你这么 2024-12-20 #Effective C++ #继承
Effective C++ 条款34 接口继承和实现继承 条款34 : 区分接口继承和实现继承 作为class的设计者, 我们有时希望派生类只继承成员函数的接口, 有时又希望同时继承接口和实现, 有时又希望能够重写所继承的实现, 因此我们的选择是多样的, 这里大有可以探讨的地方, 本条款将带我们区分不同的继承方法, 并对其做出建议 三种继承方式首先让我们明晰各种继承方式的区别, 大体有三种继承方式 : 接口继承 : pure virtual函数实 2024-12-17 #Effective C++ #继承
Effective C++ 条款33 继承, 重载与作用域 条款33 : 避免遮掩继承而来的名称 本条款并非和继承有关, 而是在讨论由继承引发的作用域问题, 其有可能破坏条款32所确定的法则, 因此我们在其之后介绍本条款。 我们知道在不同作用域下如果有相同名称的事物, 无论其功能或类型, 都是局部优先的. 继承的父子类也是类似, 不管是不是虚函数, 亦或是纯虚函数都完全没有关系, 都遵守相同名称局部优先的原则, 我们来看看一下的代码 : 123456 2024-12-16 #Effective C++
Effective C++ 条款32 public继承 条款32 : 确定你的public继承塑膜出 is-a 关系 从本条款开始我们将步入面向对象编程这一重要领域进行讨论, 首先我们将会围绕public继承, 分析public继承的意义与目的, 再举出两个错误的public继承典例. public继承意味”is-a”(是一种)的关系这便是C++面向对象编程的最重要的一个规则, 请把这个规则牢牢记在心中吧, 相信很多人以及对这种认知有所耳闻, 我甚至 2024-12-12 #Effective C++ #继承
瓦尔登湖读书摘录(3) 只要紧紧跟随你的天赋, 它每时每刻都将让你看到全新的景色. 从事商业需要极具自信, 认真, 机警, 敢于冒险和不知疲倦的精神. 当了解某个人的真实性格以后, 我自认为是不可能去改变它的, 无论是让它变得更好还是更坏. 我既可以因为看戏而感动, 但我也可以对和我有重要关系的实际事件无动于衷. 我们活得太拥挤, 因袭彼此的生活方式, 相互之间磕磕绊绊, 我想我们因此失去了彼此之间的尊重. 对 2024-12-11 #阅读 #瓦尔登湖
Effective C++ 条款31 编译依存性 条款31 : 将文件间的编译依存关系降至最低 本条款将带我们认识文件编译依存的问题, 以及解决问题的两个有效手段. 问题引入问题的根源来自C++并没有把**”将接口从实现中分离”**这事做得很好, 简单来说, 由于C++本身机制与定位的原因, 为了达到更大的效率和可扩展性, C++引入inline和template等特性, 这些特性无不需要在头文件中发挥作用, 也就代表原本只应该存放声明的头文件 2024-12-11 #Effective C++ #编译依存性
Effective C++ 条款30 inline 条款30 : 透彻了解inlining的里里外外 inline 函数, 多么棒的点子! 本条款将带我们透彻了解inlining的里里外外, 与往常的形式不同, 我会以知识点集的形式把书中对inline的描述列举处理, 可更简单明了的认识inline. inline的优劣 inline函数, 看起来像函数, 动作像函数, 却比宏好得多, 调用它们不用蒙受函数调用所带来的额外开销. 编译器会对inl 2024-12-09 #Effective C++
Effective C++ 条款29 异常安全性 条款29 : 为”异常安全”而努力是值得的 异常安全性是我们每个程序员都要考量的内容, 我们有必要知道我们写出的每个函数保证了怎样的异常安全, 因为一个函数是否会抛出异常不仅会影响我们是否使用该函数的决策, 也会影响部分的编译器优化策略, 让我们通过本条款来充分认识异常安全性. 先了解本条款的例子, 假设有个class用来表现夹带背景图案的GUI界面, 这个class用于多线程环境, 所以它有个 2024-12-08 #Effective C++ #异常安全