Effective C++读书笔记---设计与声明
来源:互联网 发布:合金装备幻痛捏脸数据 编辑:程序博客网 时间:2024/05/18 19:38
良好的设计与声明习惯可以有效提高C++代码质量。
在设计接口时请记住一个原则:.让接口容易被正确使用,不易被误。
以下方法可供参考:
a.增加新的类型预防用户调用接口出错
假设如下例子:class Date{ public: Date(int month,int day,int year);}
用户有可能将年、月、日的顺序搞反
struct Day{};struct Month{};struct Year{};class Date{ public: Date(const Month& m,const Day& d,const Year& y);}
结论:明智而审慎的导入新类型可以有效预防接口被误用。
b.尝试以函数替换对象,如限制月份的大小
class Month{ public: static Month Jan() {return Month(1)}; static Month Feb() {return Month(2)}; ... private: explict Month(int m);}Date d(Month::Mar(),Day(30),Year(1995)); //函数替换对象,表现某个特定月份,易于理解又可限制输入范围
c.限制类型内什么事可做,什么事不可做。对于用户自定义的类型,应该尽量与内置类型的行为保持一致。
如 if(a*b = c) //"以const 修饰operator*的返回类型"
记住:任何接口如果要求客户必须记得做某些事情,就是有着“不正确使用”的倾向。如:
I
nvestment* CreateInvestment();std::tr1::shared_ptr<Investment> creatInvestment();//返回一个智能指针可以有效防止用户忘记释放资源//shared_ptr提供的构造函数可以接受两个实参:一个是被管理的指针,一个是引用次数变为零时将被调用的“删除器”。std::tr1::shared_ptr<Investment> createInvestment(){ std::tr1::shared_ptr<Investment> retVal(static_cast<Investment*>(0),getRidOfInvestment); retVal = ...; return retVal;}当你传出一个智能指针的时候,会给调用者减少很多负担。
1 0
- <<Effective C++>>读书笔记4: 设计与声明
- 【读书笔记】Effective C++—4 设计与声明(之1)
- Effective C++读书笔记---设计与声明
- Effective C++读书笔记---设计与声明
- 《Effective C++》读书笔记(五) 设计与声明(第一部分)
- 《Effective C++》读书笔记(六) 设计与声明(第二部分)
- Effective C++(四)设计与声明
- effective C++: 4.设计与声明
- Effective C++(四)接口设计与声明
- 《Effective C++》设计与声明章节
- 《Effective C++》第四章:设计与声明
- effective C++ 读书笔记四 —— 设计与声明
- Effective C++读书笔记 第四部分 设计与声明
- Effective C++读书笔记(四) 设计与声明
- 《Effective C++第三版》读书笔记——设计与声明
- 【effective c++读书笔记】【第4章】设计与声明(1)
- 【effective c++读书笔记】【第4章】设计与声明(2)
- 《Effective C++》设计与声明:条款18-条款19
- 物理术语的理解(二)
- [C/C++]在头文件中使用static定义变量意味着什么
- 大公司都有哪些开源项目
- Java基础之(十九)抽象类
- java基础知识(三)——java编程实例练习(附答案)
- Effective C++读书笔记---设计与声明
- MySQL笔记-常用数据库函数
- HDU-2041-超级楼梯
- 最近学习android MVP自己写了一个练手DEMO
- C#控制台基础 接口in抗变小实例
- 19种Android必杀技小工具
- PHP网络爬虫之CURL学习
- POWOJ 2475 Xor问题(异或运算+字典树)
- NSOutputStream-保存网络资源到本地