溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++--初始化列表

發(fā)布時間:2020-07-06 14:23:37 來源:網(wǎng)絡 閱讀:1494 作者:淡淡_小孩 欄目:編程語言

Q:下面程序類的定義是否合法?

#include <iostream>
using namespace std;
class Test
{
    private:
        const int ci;
    public:
        Test()
        {
            ci=10;
        }
        int getCi()
        {
            return ci;
        }
};

int main()
{
    Test t;
    cout<<"t="<<t<<endl;
}

結(jié)果
C++--初始化列表
可以看出錯誤是const定義的是只讀并且沒有進行初始化,對其進行修改后正確的初始化程序與結(jié)果如圖所示
C++--初始化列表C++--初始化列表
類成員的初始化:
1.C++中提供了初始化列表對成員變量進行初始化
2.語法規(guī)則
C++--初始化列表
注意事項
1.成員的初始化順序與成員的聲明順序相同
2.成員的初始化順序與初始化列表中的位置無關
3.初始化列表先于構(gòu)造函數(shù)的函數(shù)體執(zhí)行
代碼示例及結(jié)果

#include <iostream>
using namespace std;

class Value
{
private:
    int mi;
public:
    Value(int i)
    {
        cout<<"i="<<i<<endl;;
        mi = i;
    }
    int getI()
    {
        return mi;
    }
};

class Test
{
private:
    Value m2;
    Value m3;
    Value m1;
public:
    Test() : m1(1), m2(2), m3(3)
    {
        cout<<"Test()"<<endl;
    }
};

int main()
{
    Test t;

    return 0;
}

C++--初始化列表C++--初始化列表
類中的const成員
1.類中的const成員會被分配空間
2.類中的const成員的本質(zhì)是只讀變量
3.類中的const成員只能在初始化列表中指定初始值
代碼示例及結(jié)果

#include <iostream>
using namespace std;

class Value
{
private:
    int mi;
public:
    Value(int i)
    {
        cout<<"i="<<i<<endl;
        mi = i;
    }
    int getI()
    {
        return mi;
    }
};
class Test
{
private:
    const int ci;
    Value m2;
    Value m3;
    Value m1;
public:
    Test() : m1(1), m2(2), m3(3), ci(100)
    {
        cout<<"Test()"<<endl;
    }
    int getCi()
    {
        return ci;
    }
    int setCi(int v)
    {
        int* p = const_cast<int*>(&ci);

        *p = v;
    }
};
int main()
{
    Test t; 
    cout<<"t.getCi()"<<t.getCi()<<endl;  
    t.setCi(10);
    cout<<"t.getCi()"<<t.getCi()<<endl;
    return 0;
}

C++--初始化列表
我們要知道初始化與賦值不同
1.初始化:對正在創(chuàng)建的對象進行初值設置
2.賦值:對已經(jīng)存在的對象進行值設置
小結(jié)
1.類中可以使用初始化列表對成員進行初始化
2.初始化列表先于構(gòu)造函數(shù)體執(zhí)行
3.類中可以定義const成員變量
4.const成員變量必須在初始化列表中指定初值
5.const成員變量為只讀變量

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI