我在讀一本書,作者有一個不可複製的類,它以另一個類的成員變量結束。它突出了我,因爲作者的做法,因爲他喜歡指向參考。讓我舉個例子。傳遞一個不可複製的類
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