假設有一個返回std::set
的方法:C++返回一個類到一個const引用或不?
std::set<string> MyClass::myMethod() const
{
std::set<string> result;
// ... some code to fill result ...
return result;
}
在發送方,我們可以存儲的myMethod
結果在兩個方面:
void MyClass::test()
{
const std::set<string> s1 = myMethod(); // 1
const std::set<string>& s2 = myMethod(); // 2 (using reference)
// ... some code to use s1 or s2 ...
}
我的問題是:
- 他們之間有什麼區別嗎?
- 哪種方式更好, 高效?
是否第一個版本需要拷貝(RVO除外),如果該類型有一招構造函數和/或移動賦值運算符? – Kos
在實踐中,你更喜歡哪種方式? – deepmax
@MasoudM。首先。 –