这是一个简单的例子来说明这个问题:
class A {};
class B
{
B(A& a) : a(a) {}
A& a;
};
class C
{
C() : b(a) {}
A a;
B b;
};
所以 B 负责更新 C 的一部分,我通过 lint 运行代码,它对引用成员 林特 # 1725发牢骚。 这里说的是要小心处理默认的拷贝和赋值,这很公平,但是默认的拷贝和赋值对于指针来说也很糟糕,所以几乎没有什么好处。
我总是尝试在可以使用引用的地方使用引用,因为裸指针会不确定地引入谁负责删除那个指针。我更喜欢通过值嵌入对象,但是如果需要指针,我会在拥有指针的类的成员数据中使用 auto _ ptr,并将对象作为引用传递。
我通常只在成员数据中使用指针,当指针可以为空或可以更改时。对于数据成员而言,是否有其他原因更喜欢使用指针而不是引用?
是不是说一个包含引用的对象不应该被赋值,因为引用一旦初始化就不应该被更改?