摘要: 6 继承与面向对象设计 条款 32 确定你的 public 继承塑模出 is-a 关系 “Derived is a Base!” ​ 当一个类可以描述成 is-a 这样的概念的时候,就应该用 public 继承。 例. 每个学生都是人,但人不一定是学生。因此学生类应该 public 继承自 “人” 阅读全文
posted @ 2022-08-24 02:49 Linghhh 阅读(26) 评论(0) 推荐(0)
摘要: 5 实现 条款 26 尽可能延后变量定义式出现的时间 ​ 我们写代码的时候,可能会定义一些没有使用的变量,特别是当你过早的定义一个变量,从定义到使用中间如果出现异常且该异常被丢出,那么你就要承担不必要的构造和析构成本。 ​ 所以尽量在你使用到变量的前一刻再定义它。 请记住 : ​ 1. 尽可能延后定 阅读全文
posted @ 2022-08-24 02:48 Linghhh 阅读(35) 评论(0) 推荐(0)
摘要: 4 设计与声明 条款 18 让接口容易被正确使用 第一点 设计接口的时候,应该考虑用户会做出什么样的错误。 ​ 对于一些有特定含义的参数,可以使用外覆类型(wrapper types)来区别参数。 例 : struct Day{ explicit Day(int d) : val(d) { } in 阅读全文
posted @ 2022-08-24 02:48 Linghhh 阅读(31) 评论(0) 推荐(0)
摘要: 资源管理 条款 13 以对象管理资源 ​ “以对象管理资源“”也被称为“资源取得时机便是初始化时机(RAII)”。 获得资源后立即放进管理对象内,即在构造函数中获取资源。 管理对象(managing object)运用析构函数确保资源被释放。 ​ 在C++11中,应该使用 shared_ptr 和 阅读全文
posted @ 2022-08-24 02:47 Linghhh 阅读(26) 评论(0) 推荐(0)
摘要: # 2 构造/析构/赋值运算 条款 05 了解 C++ 默认编写并调用哪些函数 当没有在类中显示声明,编译器则会声明默认版本的 copy 构造函数、 copy assignment 操作符和一个析构函数。 编译器默认生成的函数是 public 和 inline 的。 class Empty{ }; 阅读全文
posted @ 2022-08-24 02:47 Linghhh 阅读(42) 评论(0) 推荐(0)
摘要: 1 让自己习惯C++ 条款 01 视 C++ 为一个语言联邦 C : C++以C为基础,block、语句、预处理器、内置数据类型、数组、指针都来自于C。当使用C++中的C成分工作时,没有模板(Template)、没有异常(Exceptions)、没有重载(overloading)。 Object-O 阅读全文
posted @ 2022-08-24 02:46 Linghhh 阅读(115) 评论(0) 推荐(0)