如果編譯器會在以下情況下優化副本,我會漫步。我有一個類,其唯一的資源成員是可能是幾KB的字符串。我想有一個這個類的公共成員來訪問該字符串,我不知道我是否應該讓這個成員返回一個引用或僅僅是通過值。假設我選擇的價值,像這樣當返回一個字符串作爲const引用時,編譯器是否避免了一個副本?
class A {
public:
A();
~A();
std::string getString() { return str; }
private:
std::string str;
}
int main() {
A *a = new A;
const std::string& str = a->getString();
std::cout << str;
}
返回編譯器優化和將避免副本,如果我把結果作爲const std::string&
在main
?
我不明白你爲什麼認爲編譯器*不會*避免複製。調用者要求對字符串進行「const」引用,那麼爲什麼編譯器不提供這些? – EJP