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++ #异常安全
瓦尔登湖读书摘录(2) 假如我们醒来并没有过上比睡前更崇高的生活, 那么白天也就没什么好期待的了. 人要是不相信在喧嚣的白日之前, 有者更神圣,更绚丽的时刻, 那么他对生活肯定已经感到绝望, 而他所走的人生之路肯定是江河日下, 越来越黑暗的. 只要我清醒着, 心中有光明, 那就是早晨. 我们必须学会再次苏醒, 并保持着清醒的状态, 但要借助的不是某些生硬的措施, 而是对黎明的无限期待, 这是在我们睡得最熟时也会也 2024-12-07 #阅读 #瓦尔登湖
Effective C++ 条款28 避免返回handles指向对象内部成分 条款28 : 避免返回handles指向对象内部成分让我们先来明确本条款中的两个概念 : handle : 即句柄, 号码牌, 可以理解为各种指针, 引用, 迭代器. 内部成分 : private成员变量和成员函数. 有了上面两个概念, 就可以比较直观地理解本条款了, 不过在通读完本条款后, 本条款虽说是避免返回handles指向对象内部成分, 但是其实内容着重在解释在必须返回handles 2024-12-07 #Effective C++
Effective C++ 条款27 类型转换 条款27 : 尽量少做转型动作 优良的C++代码很少使用转型, 但是要完全摆脱它们又太过不切实际, 我们应当保证”类型错误”绝无可能发生. 本条款在了解各种转型动作的前提下, 指出了一些有风险的转型操作及其解决方法. 我们先来回顾一下类型转换 : 旧式C风格转型12(T)expression;T(experssion); 新式转型1234static_cast<T>(expres 2024-12-06 #Effective C++