深度探索C++ 对象模型(5)-Initialization list(2)
生活随笔
收集整理的這篇文章主要介紹了
深度探索C++ 对象模型(5)-Initialization list(2)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Initialization list的作用是效率
如下代碼可以編譯并運行,但是效率低下
class Word {String _name;int _cnt;public:Word() { _name = 0; _cnt = 0; // 是否使用initialization list 都是相同的} };其等價于
Word::Word() {_name.String::String(); //調用String的 default constructor String temp = String(0); //產生暫時性對象 _name.String::operator=( temp ); // "memberwise"地拷貝_nametemp.String::~String(); //摧毀暫時性對象_cnt = 0; }這樣優化,則效率大大提升:
//較佳的方式Word::Word(): _name( 0 ){_cnt = 0;}其等價于
Word::Word(){_name.String::String( 0 ); //調用String(int) constructor_cnt = 0; }【引用】
[1]<<深度探索C++ 對象模型 Inside The C++ Object Model >> Stanley B.Lippman 候捷 譯
[2] 代碼地址 https://github.com/thefistlei/cplusStudy.git
總結
以上是生活随笔為你收集整理的深度探索C++ 对象模型(5)-Initialization list(2)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度探索C++ 对象模型(5)-Init
- 下一篇: 深度探索C++ 对象模型(5)-Init