这是一个简单的例子来说明这个问题:
class A {};
class B
{
B(A& a) : a(a) {}
A& a;
};
class C
{
C() : b(a) {}
A a;
B b;
};
所以B负责更新C的一部分。我通过lint运行代码,它抱怨引用成员:lint#1725。这篇文章谈到了对缺省拷贝和赋值的关注,这是足够公平的,但缺省拷贝和赋值在指针方面也不好,所以这样做没有什么好处。
我总是尽可能地使用引用,因为裸指针引入了不确定的关于谁负责删除该指针的问题。我更喜欢按值嵌入对象,但如果需要指针,我会在拥有指针的类的成员数据中使用auto_ptr,并将对象作为引用传递。
我通常只在成员数据中使用指针,当指针可能为空或可能更改时。对于数据成员来说,有没有其他更喜欢指针而不是引用的原因?
是否可以说包含引用的对象不应该是可赋值的,因为引用一旦初始化就不应该被更改?
https://stackoverflow.com/questions/892133
复制相似问题