什麼是複製最佳化和返回值最佳化?
複製最佳化是大多數編譯器實施的一種最佳化,可以防止在某些情況下出現額外的(可能很昂貴的)複製。因此,如果你有一些正在建立不使用的物件或沒有副作用的程式碼,
示例
struct MyStruct {
MyStruct() {}
MyStruct(const MyStruct&) {
std::cout << "Copied.\n";
}
};
MyStruct f() {
return MyStruct();
}
int main() {
std::cout << "Main\n";
MyStruct obj = f();
}輸出
根據編譯器和設定,你可以獲得以下任何輸出 −
Main Main Copied Copied Main Copied
這意味著建立的物件比你預期的要少,因此你也不能依賴於呼叫特定數量的建構函式和解構函式。你不應該在複製/移動建構函式或解構函式中編寫關鍵邏輯,因為你不能依賴於它們的呼叫。
廣告
資料結構
網路通訊
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP