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的其他方法