1. 程式人生 > >C++中建構函式初始化列表為什麼會比建構函式中賦值要高效

C++中建構函式初始化列表為什麼會比建構函式中賦值要高效

Test

{

Test(test& t1)

{

this->t=t1;

}

private:

test t;

}

相信很多人跟我一樣,非常困惑為什麼Test構造時會先呼叫test的建構函式,再呼叫test類的賦值操作符。那是因為賦值操作符不能產生新的物件,Test構造時免不了要構造一個test物件。所以正常流程是 先構造t,然後再呼叫賦值操作符賦值t(this->t=t1)。

如果寫成

Test

{

Test(test& t1):t(t1)

{

}

private:

test t;

}

就只會呼叫一次test的拷貝建構函式,構造出t。所以初始化列表比賦值更高效。