zoukankan      html  css  js  c++  java
  • C++ 成员初始化列表

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

    #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 + "
    type: " + type + "
    model: " + 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"; 被初始化列表的值覆盖了

    2.为什么需要成员初始化列表

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

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

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

        3.必须用这种格式来初始化引用数据成员(这是因为引用与const数据类似,只能在创建时被初始化)

  • 相关阅读:
    2015长春区域赛感想
    己亥清爽恢复系列之数据文件1篇:SYSTEM物理损坏或丢失(关键表空间)
    ecshop和jQuery冲突
    ecshop广告分析
    ecshop商品页增加编辑器fckeditor
    DIV自适应高度
    打个招呼
    jdk的wsimport方法实现webservice客户端调用服务
    jdk自带发布webservice服务
    Mysql数据库基本配置
  • 原文地址:https://www.cnblogs.com/heben/p/9440032.html
Copyright © 2011-2022 走看看