日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

C++中关于类中常数静态成员初始化的问题

發(fā)布時(shí)間:2023/12/19 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++中关于类中常数静态成员初始化的问题 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
class mytestclass
{
public:
??? const static int i = 5;
};
int main()
{
??? std::cout<<mytestclass::i<<std::endl;
??? return 0;
}
結(jié)果沒有問題,輸出為5(編譯器為vc7.1)

但是在下面這個(gè)例子中:
int regi()
{
??? return 5;
}
class mytestclass
{
public:
??? const static int i = regi();
};
int main()
{
??? std::cout<<mytestclass::i<<std::endl;
??? return 0;
}
輸出卻不正確,輸出為0(編譯鏈接都沒有問題)。。。
似乎代碼并沒有執(zhí)行regi函數(shù)?

在C++標(biāo)準(zhǔn)中將初始化變量分為"動(dòng)態(tài)初始化"和"靜態(tài)初始化","動(dòng)態(tài)初始化"為利用函數(shù)進(jìn)行初始化,"靜態(tài)初始化"為常量表達(dá)式進(jìn)行初始化.
C++標(biāo)準(zhǔn)對于類中的常量表達(dá)式的"動(dòng)態(tài)初始化"似乎并未做說明,所以是否支持類中常數(shù)靜態(tài)變量的動(dòng)態(tài)初始化也就取決與編譯器的設(shè)計(jì)了.
但是無論如何vc7.1的編譯結(jié)果都是不對的,它并沒有給出錯(cuò)誤,但是結(jié)果與邏輯不向符合,這應(yīng)該是vc7.1的一個(gè)bug.(在vs2005中的C++編譯器已經(jīng)修正了這個(gè)bug,給出了一個(gè)編譯Error)

詳細(xì)討論請見:
http://community.csdn.net/Expert/topic/4432/4432789.xml?temp=.3202783

特別感謝qfeng_zhao 、 lxpws 、 iGray 等幾位.

轉(zhuǎn)載于:https://www.cnblogs.com/shootingstars/archive/2006/01/23/321956.html

總結(jié)

以上是生活随笔為你收集整理的C++中关于类中常数静态成员初始化的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。