C++ 成员初始化列表

1.什么是成员初始化列表ios

#include<iostream>
#include<string>
using namespace std;
class Weapon
{
private:
    string name;
    const string type;
    const string model;
public:
    Weapon(string& name, string& type, string& model) :name(name), type(type), model(model)
    {
        name = "Cloud";
    }
    string getProfile()
    {
        return "name: " + name + "\ntype: " + type + "\nmodel: " + model;
    }
};

int main(void)
{   
    string name = "Comet";
    string type = "carbine";
    string model = "rifle";
    Weapon weapon(name, type, model); 
    cout << weapon.getProfile() << endl;

    cin.get();
    return 0;
}

 

上面代码中标红的部分,就是成员初始化列表函数

 

注意观察,构造函数里的 name = "Cloud"; 被初始化列表的值覆盖了spa

2.为何须要成员初始化列表对象

type和model都是常量,能够初始化但不能赋值,若是试图在构造函数的函数体中进行如  type = "xxx";之类的 赋值,将会报错。 从概念上讲,在进入构造函数的函数体以前,对象已经被建立,因此必须在对象建立以前完成初始化,因此C++发明了初始化列表,这种形式的赋值被认为就是初始化。blog

请注意:1.这种格式只能用于构造函数;ci

    2.必须使用这种方式来初始化非静态const数据成员(静态const数据不属于对象因此也就不能在构造函数里初始化);get

    3.必须用这种格式来初始化引用数据成员(这是由于引用与const数据相似,只能在建立时被初始化)string

相关文章
相关标签/搜索