2011-05-19 29 views
3

我想教一些學生,在下面的情況下,您應該通過引用傳遞,否則對象將被複制。如果您不通過引用將對象傳入函數,會出現什麼問題

注意:他們還不知道複製構造函數,所以如果可能的話,我不想在示例中提及它們。

int sumOfSizes(CObject const & a, CObject const & b) 
{ 
    return a.getSize() + b.getSize(); 
} 

任何人都可以幫助我一個現實世界的例子,其中總和事實上不是預期的嗎?

+5

這樣的例子可能表明'CObject'設計不好。 – 2011-05-19 10:59:06

+1

這兩個參數應該是CObject常量& – 2011-05-19 10:59:35

+2

主要參數是性能,不正確,不是嗎?假設每個CObject包含一百萬個字符串 - 複製只是爲了確定大小將是一個壞主意。 – 2011-05-19 11:01:05

回答

6

正如@ Space_C0wb0y在他的評論中,這可能會做一些「意外」時,路過值如果爲CObject拷貝構造函數做了一件「意外」(例如,當地CObject情況下是不等價的唯一途徑暗示(以無論如何)到原始實例)。這反過來會表明不好的設計。

因此,你的反例將不得不依靠一個人爲設計的設計不佳的CObject

+1

好吧,我明白你的意思了! – clamp 2011-05-19 11:03:20

相關問題