利用“member initialization list”初始化类成员

来源:互联网 发布:poker适合编程吗 编辑:程序博客网 时间:2024/06/10 20:15
  • 原因

    成员变量的初始化工作在进入构造函数之前;

  • 举例

    // 错误做法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;

0 0