【C++ Primer 第十二章】 shared_ptr和new的结合使用

shared_ptr和new的结合使用

• 如果我们不初始化一个智能指针,它就会被初始化一个空指针。

• 一个shared_ptr默认初始化为一个空指针。我们也可以使用new返回的指针来初始化一个shared_ptr:

shared_ptr<double> p1;                //shared_ptr可以指向一个double
shared_ptr<int> p2(new int(42));      //p2指向一个值为42的int  

• 接受指针参数的智能指针构造函数是explicit的。因此,我们不能将一个内置指针隐式的转换为一个智能指针,必须使用直接初始化形式:

shared_ptr<int> p1(new int(42));      //p1指向一个值为42的int
shared_ptr<int> p2 = new int(1024);   //错误,不能将一个内置指针隐式转化为智能指针。
1  shared_ptr<int> clone(int p)
2 {
3    return new int(p);        //错误,不能隐式转化
4 }
5 
6     shared_ptr<int> clone(int p)
7 {
8    return shared_ptr<int>(new int(p));   //正确
9 }

                                                          定义和改变shaed_ptr的其他方法

猜你喜欢

转载自www.cnblogs.com/sunbines/p/8946600.html