03 2022 档案
摘要:条款13:以对象管理资源 RAII技术“Resource Acquisition is Initialization”资源获取即初始化,在管理对象构造函数时分配资源,并在析构函数中释放资源。 条款14:在资源管理类中小心copying行为 禁止复制 引用计数 条款15:在资源管理类中提供对原始资源的
阅读全文
摘要:条款05:了解C++默默编写并调用那些函数 编译器会声明一个:copy构造函数、析构函数、默认构造函数、“=”重载函数(全部是public 和inline类型) 条款06:不想使用编译器自动生成的函数就应该拒绝 将相应函数声明为private 条款07:将多态基类析构函数声明为virtual类型 如
阅读全文
摘要:条款01:视C++为一个语言联邦 C++的四个组成部分:C、C With Classes、Template C++、STL 条款02:尽量以const、enum、inline替换#define 常量用const和enums替换#define 用inline函数替换带参宏(#define) 条款03:
阅读全文
摘要:条款二十五:虚化constructor和non-member function 虚化constructor是指根据传入的参数构造出不同的对象:利用一个virtual member function来完成 1 //基类 2 class Base{ 3 public: 4 virtual Base* c
阅读全文
摘要:条款三十二:在未来时态下发展程序 提供完整的class,例如为每个类处理copy construction动作 合理设计接口,例如禁止不希望发生的动作 泛化代码 条款三十三:将非尾端类设计为抽象类 如条款名字。 条款三十四:如何在同一个程序中结合C++和C 关于函数的命名重整技术、static类型对
阅读全文
摘要:条款十六:80-20法则 20%的代码占用了80%的执行时间、内存等等,因此需要化大部分时间编写 条款十七:缓式评估 利用 区分读写、生成表达式等方式避免立刻计算 条款十八:分期摊还预期的计算成本 超急评估:例如某些容器总是以二倍当前容量扩展。 某些运算的结果不总是需要时利用缓式评估可以改善效率,而
阅读全文
摘要:条款九:利用deconstructor避免资源泄露 将资源封装在对象中(如指针),利用对象离开作用域会自动析构的原理将资源释放,阻止资源的泄露。 条款十:在constructor组织资源泄露 C++只会析构已经构造完成的对象,如果构造过程中出现exceptions,则不会调用析构函数可能出现资源的泄
阅读全文
摘要:条款五:对定制的类型转换函数保持警觉 两类可以由编译器完成类型转换的函数:单变量constructor和隐式类型转换操作符,其中隐式类型转换函数 1 class Rational{ 2 public: 3 Rational(int numerator = 0, int denominaion = 1
阅读全文
摘要:条款一:区别pointers和references 指针:可以更改指向的对象,不需要初始化,需要检测合法性(是否是NULL) 引用:不能更改指向对象,需要一个对象来初始化,实现某些操作符, 如 operator [] 条款二:C++转型符 C++相比C增加了四类转型操作符 static_cast /
阅读全文