在C++中将智能指针放在类数据(作为类成员)中的正确方法是什么?

bod*_*ydo 2 c++ smart-pointers shared-ptr class-members

假设我有一个Boda班:

class Boda {
    ...
};
Run Code Online (Sandbox Code Playgroud)

cydo在这个类中有一个成员,我想成为一个智能指针(也就是说,我希望它在类被破坏后自动释放).

我正在使用Boost的智能指针,所以我写道:

class Boda {
    boost::shared_ptr<int> cydo;
    public:
        Boda () {
            cydo = boost::shared_ptr<int>(new int(5));
        }
};
Run Code Online (Sandbox Code Playgroud)

这是将智能指针作为类成员的正确用法吗?

谢谢,Boda Cydo.

dir*_*tly 10

class Boda {
    boost::shared_ptr<int> cydo;
    public:
        Boda () : cydo(new int(5)) {} 
};
Run Code Online (Sandbox Code Playgroud)

虽然,我想不出你为什么要包装int... :)

  • 尝试始终1)使用初始化列表和2)使用直接初始化而不是复制初始化.避免冗余的分配和副本.见Sutter:http://www.gotw.ca/gotw/036.htm (4认同)