我在读一本书,作者有一个不可复制的类,它以另一个类的成员变量结束。它突出了我,因为作者的做法,因为他喜欢指向参考。让我举个例子。传递一个不可复制的类
class Foo; // noncopyable
class WrapperFoo
{
public:
explicit WrapperFoo(Foo& x)
: mFoo(&x)
{}
Foo* mFoo;
};
笔者做了什么令我惊讶的是,他通过引用传递的Foo对象,然后他需要的Foo对象的地址和contructs的mFoo指针。为什么从一个引用开始,以一个指针结束?
class Foo; // noncopyable
class WrapperFoo
{
public:
explicit WrapperFoo(Integer* x)
: mFoo(x)
{}
Integer* mFoo;
};
如果我想要一个指针,这似乎更直接(和相同)。我明白这可能只是偏好。
class Foo; // noncopyable
class WrapperFoo
{
public:
explicit WrapperFoo(Integer& x)
: mFoo(x)
{}
Integer& mFoo;
};
此外,我读过更喜欢引用指针,所以为什么不呢?
我相信这三个例子正在完成同样的任务。我错过了什么吗?为什么作者更喜欢在这个例子中指向引用?最后,是否有这个用法的名称?
一旦你有一个引用数据成员,你的类变得不可分配。 – dyp