2017-04-07 99 views
0

我有了對象的矢量的容器。C++ - 返回指針或const參考

class Container 
{ 
    vector<Foo> objects; 

我想

  • 容器超出範圍後讀過作爲主叫
  • 避免調用拷貝構造函數
  • 忽略訪問這些對象的問題對這些對象的唯一通道(這永遠不會發生)

基於此,它似乎有我有2個選擇的ge方法。或者返回常量引用一個矢量,或返回指針爲const矢量

const vector<Foo> & getRef() { return objects; } 
const vector<Foo> * getPtr() { return &objects; } 

當然,如果我來電,我需要確保不調用拷貝構造函數,當我重複。所以我想這個

for (const Foo & f : getRef()) 

,而不是

for (Foo f : getRef()) 

現在,我應該返回const引用?或者指向const的指針?有什麼好處和缺點?

+2

通常指針被用來當你回來時可以爲空,但在這種情況下,它是一個載體,因此它不能真正爲空的..我會用const-REF – AlexG

+0

你的第3受歡迎去,恕我直言總是更好,是將該函數(調用getter並使用該引用)帶入Container中 - 因此不需要getter。看到的封裝:(來自維基)「A語言構造便於與對數據進行操作的方法(或其他功能)的數據的捆綁」。 –

回答

2

的參考文獻是更穩健。你不能無意中調用它的刪除。