C 11 memperkenalkan rujukan nilai dan menggerakkan semantik untuk meningkatkan prestasi dengan mengelakkan salinan yang tidak diperlukan dan mengoptimumkan penciptaan objek. Memahami perbezaan antara teknik ini adalah penting untuk menulis kod yang cekap.
Pertimbangkan contoh kod C 11 berikut:
Contoh Pertama:
std::vector<int> return_vector() { std::vector<int> tmp {1, 2, 3, 4, 5}; return tmp; } std::vector<int> &&rval_ref = return_vector();
Kedua Contoh:
std::vector<int>&& return_vector() { std::vector<int> tmp {1, 2, 3, 4, 5}; return std::move(tmp); } std::vector<int> &&rval_ref = return_vector();
Contoh Ketiga:
std::vector<int> return_vector() { std::vector<int> tmp {1, 2, 3, 4, 5}; return std::move(tmp); } std::vector<int> &&rval_ref = return_vector();
Contoh Pertama:
Contoh Kedua:
Ketiga Contoh:
Cara yang disyorkan untuk mengembalikan objek sementara sebagai rujukan nilai bergerak sahaja (cth., std::vector
std::vector<int> return_vector() { std::vector<int> tmp {1, 2, 3, 4, 5}; return tmp; } std::vector<int> rval_ref = return_vector();
Pendekatan ini memberikan yang terbaik gabungan prestasi dan ketepatan.
Atas ialah kandungan terperinci Bagaimanakah Rujukan Nilai R dan Memindahkan Kesan Semantik C 11 Mengembalikan Penyata?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!