2013-02-16 90 views
0

我最近了解到轉換const對象引用const對象

Object const & object(); 

Object o = object(); 

會導致一個副本。所以我很好奇當

Object const o = object(); 

會做。

+0

第一個是函數聲明。 – 0x499602D2 2013-02-16 14:26:35

+0

有史以來最糟糕的命名慣例... – 2013-02-16 14:26:41

+0

@David我認爲它應該是。但它也與我的頭腦混爲一談。 – 2013-02-16 14:27:11

回答

1

它也會複製一份。

爲了避免副本,您可以創建一個參考綁定到相同的對象,該函數返回引用:

Object const & o = object(); 
0

而且複製,你o應該只要它的構造一個東西。在這裏複製構建。

0

引用不是對象,但它們只是一個別名,因此分配引用與分配對象相同。

Object const & object(); 

Object o = object(); //here o is not constant. you can do o=object() again. 

Object const o = object(); //here o is constant. you can't do o=object() again after its initialization. 
+0

嚴格來說,你不知道Object是否是一個具有常數賦值運算符的類。這會很愚蠢,但可能。 – 2013-02-16 14:42:20

+0

@KerrekSB的權利。標題是真的讓人誤解。我只是把這個東西當作課堂。 +1從我身邊。你的答案被接受,而沒有upvote。奇怪。 – Arpit 2013-02-16 14:43:59