● 用类型限制用户
重新设计接口:
如果想限制用户对月份的误用,可以用类:
● 防止客户写出下面代码的方法,是用const限制operator*的返回值
if (a * b = c) ... // 其实想写成 (a * b == c)
● 如果要求客户必须记住,那么他们就有可能忘记
比如申请资源的释放,强制用户使用智能指针管理:
std::tr1::shared_ptr<Investment> createInvestment();
可以为shared_ptr指定一个deleter,该deleter会在引用计数为零时自动调用。
比如有个函数getRidOfInvestment作为deleter传给shared_ptr的某个ctor:
当然,如果能直接把正确的指针给shared_ptr的ctor更好。
● shared_ptr来自boost,是原始指针的两倍大;动态分配内存;以virtual形式调用deleter;支持多线程环境下修改引用计数。