我來自Java哪裏有什麼是引用,所以我想弄清楚C++實例創建的基本。返回本地是否也涉及創建返回臨時?
Employee getEmp(int a) {
Employee local(a);
return local;
}
Employee myEmp = m.getEmp(10);
是否有3次員工實例化(無RVO)是否正確?
1 - 創建一個本地副本
2 - 臨時被結合參考創建)
3 - 爲什麼有必要在步驟2中創建myEmp
?爲什麼不直接複製本地到myEmp?
如果我打算只使用Ubuntu,那麼我應該依靠RVO嗎?我是否正確地使用RVO來完成兩個實例創建(在第二步中不需要)?
謝謝!!!
既然我們有RVO和copy elision,那麼在const&技巧中有任何需要。我的意思是使用 - Employee const&myEmp = m.getEmp(10);如果我理解正確,就沒有必要了,因爲RVO和copy elision會保存副本。 –
用'const&'聲明一個局部變量,並用一個返回值的函數對它進行初始化,它具有與用值類型聲明局部變量完全相同的語義。並始終有。這裏沒有什麼改變;使用帶引用類型的局部變量從來沒有意義_unless_它是由返回引用的函數初始化的。 –
用const聲明局部變量並擴展臨時對象的生存期,因此不需要額外的副本 –