以前在寫**時用初始化列表,因為前輩們說效率更高,也沒有去想為什麼。
最近看<>item4: 確保物件在使用前被初始化,恍然大悟。
如果使用賦值的方式在建構函式中初始化「類成員變數」,會先呼叫這個「類成員變數」類的預設建構函式,再呼叫賦值函式。
而使用初始化列表初始化「類成員變數」,只會呼叫這個「類成員變數」類的拷貝建構函式。
「賦值方式初始化」比「初始化列表」多呼叫一次預設建構函式,對於資料的初始化、賦值都會新去開闢記憶體空間(可以參考
拷貝建構函式),所以初始化列表的效率更高。
詳見下面測試**。
一點感想:
c++中每乙個小功能點都有它的意義。
c++的學習就像射箭一樣,只有在不斷的煉習中,才會由拖把到10環、9環、8環,直到0環的精準。
#include using namespace std;
class a
{public:
a(){ cout<<"default constructor, a()"<
類初始化列表
初始化類的成員有兩種方式,一是使用初始化列表,二是在建構函式體內進行賦值操作。使用初始化列表主要是基於效能問題,對於內建型別,如int,float等,使用初始化類表和在建構函式體內初始化差別不是很大,但是對於類型別來說,最好使用初始化列表,為什麼呢?由上面的測試可知,使用初始化列表少了一次呼叫預設建...
類初始化列表簡介
類的建構函式是類的一種特殊的成員函式,它會在每次建立類的新物件時執行。建構函式的名稱與類的名稱是完全相同的,並且不會返回任何型別,也不會返回 void。建構函式可用於為某些成員變數設定初始值。使用初始化列表來初始化字段 line line double len length len 相當於通過有參構...
初始化 1 預設初始化 列表初始化
初始化的基本概念 事實 初始化和賦值是兩個完全不同的操作。初始化,是建立變數時賦予其乙個初始值。賦值,是把物件的當前值擦除,用乙個新值代替。列表初始化 p39 作為c 11新標準的一部分,用花括號 來初始化變數得到了全面應用。出於某些原因,這種初始化的方式叫做列表初始化。現在,無論是初始化物件還是某...