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é)果
可以看出錯誤是const定義的是只讀并且沒有進(jìn)行初始化,對其進(jìn)行修改后正確的初始化程序與結(jié)果如圖所示

類成員的初始化:
1.C++中提供了初始化列表對成員變量進(jìn)行初始化
2.語法規(guī)則
注意事項(xiàng)
1.成員的初始化順序與成員的聲明順序相同
2.成員的初始化順序與初始化列表中的位置無關(guān)
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;
}

類中的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;
}
我們要知道初始化與賦值不同
1.初始化:對正在創(chuàng)建的對象進(jìn)行初值設(shè)置
2.賦值:對已經(jīng)存在的對象進(jìn)行值設(shè)置
小結(jié)
1.類中可以使用初始化列表對成員進(jìn)行初始化
2.初始化列表先于構(gòu)造函數(shù)體執(zhí)行
3.類中可以定義const成員變量
4.const成員變量必須在初始化列表中指定初值
5.const成員變量為只讀變量
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
當(dāng)前標(biāo)題:C++--初始化列表-創(chuàng)新互聯(lián)
文章URL:http://chinadenli.net/article44/gcjhe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)、外貿(mào)建站、品牌網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)、微信公眾號、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容