本文主要是介绍利用“member initialization list”初始化类成员,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
原因
成员变量的初始化工作在进入构造函数之前;
举例
// 错误做法 class ABEntry{ public:ABEntry(const std::string& name){name_ = name;//这里是赋值操作,name_在进入构造函数之前就被初始化} private:std::string name_; }// 正确做法 class ABEntry{ public:ABEntry(const std::string& name):name_(name){} private:std::string name_; }
说明
正确做法仅仅调用一次copy构造函数,而错误做法中会先调用默认构造函数在调用赋值函数,相比之下效果低。
其他
class的成员变量初始化顺序总是相同的,按照申明次序; base classes更早于derived classes;
这篇关于利用“member initialization list”初始化类成员的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!