Faedah Senarai Permulaan dan Kecekapannya
Senarai permulaan dikenali kerana kecekapannya dalam memulakan ahli kelas yang bukan jenis terbina dalam. Teknik ini menawarkan beberapa kelebihan berbanding kaedah pemulaan tradisional.
Dalam contoh yang disediakan, Fred::Fred(): x_(whatever) {}, pengkompil membina hasil ungkapan terus di dalam pembolehubah ahli x_, mengelakkan penyalinan dan pembinaan objek yang tidak perlu. Ini menghapuskan penalti prestasi yang dikaitkan dengan penciptaan objek sementara dan pemusnahan dalam pendekatan alternatif, Fred::Fred() { x_ = whatever; }.
Walau bagaimanapun, dalam kes khusus yang anda nyatakan, dengan kelas berikut:
class MyClass { public: MyClass(string n):name(n) { } private: string name; };
berbanding dengan alternatif:
class MyClass { public: MyClass(string n) { name=n; } private: string name; };
tiada kecekapan yang ketara keuntungan dalam menggunakan senarai permulaan. Dalam kes ini, versi kedua memanggil pembina lalai kelas rentetan dan kemudian pengendali penugasan salinannya, yang berpotensi mengakibatkan kerugian kecekapan kecil berbanding versi pertama.
Cadangan adalah untuk menggunakan secara konsisten pendekatan senarai permulaan yang disyorkan untuk memastikan ketepatan kod dan mengekalkan kebolehbacaan, walaupun dalam kes yang mungkin tiada manfaat prestasi yang ketara.
Atas ialah kandungan terperinci Bilakah Penggunaan Senarai Permulaan Menawarkan Kelebihan Prestasi yang Penting dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!