积少成多

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

这一节主要要告诉c++使用者,怎么对待接口(包括function 接口,class接口,template接口);

应该在设计接口的时候,就应考虑它的易用性,减少出错的可能。

考虑函数struct Foo* test();怎么使用智能指针减少资源泄漏的风险?

1,使用shared_ptr作为指针返回值类型

2,使用对象的特定删除器,对于互斥锁(mutex)的解除同样适用

#include <iostream>
#include <algorithm>
#include <memory>
#include <vector>

//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<Foo> test(){
    Foo *fp = new Foo();
    std::shared_ptr<Foo> sh1(fp,deleteFoo);
    return sh1;
}

int main() {
    std::shared_ptr<Foo> re = test();
    return 0;
}

 

posted on 2016-12-20 02:28  x7b5g  阅读(120)  评论(0编辑  收藏  举报