取消引用指针会使代码很难阅读。我通常做的是引用指向的对象并使用该引用。例子:
shared_ptr<std::vector<int> > sp = get_sp_to_vector();
std::vector<int>& vec = *sp;
...
vec.push_back(5);
我想知道这是否是一个好习惯。它有什么缺点吗?
更新: 为了完成这个例子,我会用以下方式定义
get_sp_to_vector()
:shared_ptr<std::vector<int> > get_sp_to_vector()
{
// create a vector and send back a shared pointer pointing at it
shared_ptr<std::vector<int> > sp(new std::vector<int>);
sp->push_back(1); sp->push_back(3);
return sp;
}
最佳答案
使用局部引用很常见,尤其是在循环体内部,但有一个要求:仅当引用显然与目标对象一样长时才使用。
这通常不难保证,但这里有一些不好的例子:
shared_ptr<X> p = get_p();
X& r = *p;
p.reset(); // might result in destroying r
use(r); // oops
// or:
shared_ptr<X> p = get_p();
X& r = *p;
p = get_some_other_p(); // might result in destroying r
use(r); // oops
关于c++ - 对指向对象的引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2098820/