这一节主要要告诉c++使用者,怎么对待接口(包括function 接口,class接口,template接口);
应该在设计接口的时候,就应考虑它的易用性,减少出错的可能。
考虑函数struct Foo* test();怎么使用智能指针减少资源泄漏的风险?
1,使用shared_ptr作为指针返回值类型
2,使用对象的特定删除器,对于互斥锁(mutex)的解除同样适用
#include#include #include #include //using namespace std;class Foo{public: Foo(){ std::cout<<"ctor..\n"; } ~Foo(){ std::cout<<"dtor..\n"; }};///对shared_ptr使用删除器void deleteFoo(Foo *f){ std::cout<<"delete from delteFoo\n"; delete f;}std::shared_ptr test(){ Foo *fp = new Foo(); std::shared_ptr sh1(fp,deleteFoo); return sh1;}int main() { std::shared_ptr re = test(); return 0;}