<分区>
这可能被视为风格问题。我有一个保留对另一个类实例的引用的类:
class A { };
class B {
A& ref;
public:
explicit B(A& ref) : A(ref) { }
};
我决定使用引用而不是指针,因为 ref 永远不可能是空指针。此外,代码看起来更漂亮。
但是,用户不知道我是否复制了 A 对不对?在这种情况下,我不复制,所以如果 A 被销毁而 B 的实例仍然存在,就会出现问题。如果您使用指针,那么当然会发生同样的情况,但我觉得用户在编写代码时会意识到没有进行任何复制。
对此有何看法?处理此问题的最佳 C++ 方法是什么?
PS.: 我想到的一个解决方案是让指针保持不变,但如果它指向的对象被销毁,那么首先制作一个拷贝。这并不难实现,但关键是:额外的麻烦值得吗?开销是否值得?这种自制的引用计数器真的是人做的吗?