以下兩個語句在語義上是否相同?以下兩個語句在語義上是否相同?
#1 person p("Rahul", 20);
#2 person const &p = person("Rahul", 20);
編輯:
對不起,我的意思是問以下兩個是否語義相同:
#1 person const p("Rahul", 20);
#2 person const &p = person("Rahul", 20);
以下兩個語句在語義上是否相同?以下兩個語句在語義上是否相同?
#1 person p("Rahul", 20);
#2 person const &p = person("Rahul", 20);
編輯:
對不起,我的意思是問以下兩個是否語義相同:
#1 person const p("Rahul", 20);
#2 person const &p = person("Rahul", 20);
他們不是。然而,差異僅由在第二種情況下需要一個拷貝構造函數是在C++ 03(即使拷貝構造函數的調用實際上並沒有完成)
// works with #1 fails with #2
struct f1 { f1(string, int); private: f1(f1 const&); };
不,他們不是。 p在每種情況下的表現方式都不相同。例如,在後一種情況下,您不能說:
p.rename("fred");
假設人員有一個rename()方法。
當然,如果你的第一個實例已經:
const person p("Rahul", 20);
兩個本來更相似。我希望你不打算爲所有的「變量」使用參考:-)
所以他們是相似的,不一樣? – missingfaktor 2010-03-17 09:48:53
@Rahul對於const版本,我想不出讓他們分開的一種方式,但我相信別人會想出一些東西。 – 2010-03-17 09:54:19
你可以定義一個引用(似乎是什麼)一個臨時的,那個臨時性的東西?我不知道。 – Ari 2010-03-17 11:20:35
訪問的事實,影響不是第二個C++ 0x? – 2010-03-17 09:40:05
@Space_Cowboy:這是一個有效的C++ 98。 – missingfaktor 2010-03-17 09:40:49