- 博客(7)
- 收藏
- 关注
原创 Effective C++ T30:透彻了解inline 的里里外外
1. 将大多数inline限制在小型、被频繁调用的函数身上。这可使日后的调试过程和二进制升级更容易,也可使潜在的代码膨胀问题最小化,使程序的速度提升机会最大化。2. 不要只因为function template出现在头文件,就将它们声明为inline。
2021-03-08 22:34:01 231
原创 Effective C++ T29:为“异常安全”而努力是值得的
1. 异常安全函数(Exception-safe functions)即使发生异常也不会泄漏资源或允许任何数据结构败坏。这样的函数区分为三种可能的保证:基本型、强烈型、不抛异常型。2. "强烈保证"往往能够以copy-and-swap实现出来,但“强烈保证”并非对所有函数都可实现或具备现实意义。3. 函数提供的“异常安全保证”通常最高只等于其所调用之各个函数的“异常安全保证”中的最弱者。
2021-03-07 22:24:04 159
原创 Effective C++ T28:避免返回handle指向对象内部成分
避免返回handle(用来取得某个对象,包括reference、指针、迭代器)指向对象内部。遵守这个条款可增加封装性,帮助const成员函数的行为像个const,并将发生“虚吊号码牌”的可能性降至最低。
2021-03-07 22:13:18 138
原创 Effective C++ T27:尽量少做转型动作
1. 如果可以,尽量避免转型,特别是在注重效率的代码中避免dynamic_cast。如果有个设计需要转型动作,试着发展无需转型的替代设计。2. 如果转型是必要的,试着将它隐藏于某个函数背后。客户随后可以调用该函数,而不需要将转型放进他们自己的代码中。3. 宁可使用C++style(新式)转型,不要使用旧式转型。前者很容易辨识出来,而且也比较有着分门别类的职掌。...
2021-03-04 13:01:27 185
原创 Effective C++ T25:考虑写出一个不抛异常的swap函数
1. 当std::swap对你的类型效率不高时,提供一个swap成员函数,并确定这个函数不抛出异常。2. 如果你提供一个member swap,也该提供一个non-member swap用来调用前者,对于class(而非template),也请特化std::swap。3. 调用swap时应针对std::swap使用using声明式,然后调用swap并且不带任何“命名空间资格修饰”。4. 为“用户定义类型”进行std template全特化是好的,但千万不要尝试在std内加入某些对std而言全新的东西
2021-03-01 20:57:45 195
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人