条款17:以独立语句将newed对象置入智能指针

  1. 有以下定义:
int priority();
void processWidget(std::tr1::shared_ptr<Widget> pw, int priority);
  1. 编译不通过版本:
    processWidget(new Widget, priority());
  2. 可能导致内存泄露版本:
    processWidget(std::tr1::shared_ptr<Widget>(new Widget), priority());
    原因:new,priority调用,Widget构造函数执行顺序不同。
  3. 推荐版本
    首先以独立语句得到实参,之后将该实参传入函数
std::tr1::shared_ptr<Widget> pw(new Widget);
preocessWidget(pw, priority());
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。