本文主要是介绍深度探索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)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!