免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
為什么static數(shù)據(jù)成員一定要在類外初始化?(轉(zhuǎn))

1.避免重復(fù)定義和初始化

<<c++ primer>>說(shuō)在類外定義和初始化是保證static成員變量只被定義一次的好方法。

但,為什么static const int就可以在類里面初始化呢?

想起C中一個(gè)函數(shù)里定義一個(gè)static變量是為了保證只初始化一次。

那么,是否可以這樣理解:

static數(shù)據(jù)成員在類外定義和初始化是為了保證只被定義和初始化一次,這樣編譯器就不必考慮類的函數(shù)里面第一個(gè)對(duì)static變量的’=’操作是賦值還是初始化了。

static const int可以在類里面初始化,是因?yàn)樗热皇?span lang="EN-US">const的,那程序就不會(huì)再去試圖初始化了。

 

而且,<<c++ primer>>說(shuō)static const int也必須在類外定義,類里面的只是聲明和初始化(但是linux下用GCC試的結(jié)果是

:不用在類外定義也完全可以,gcc version 3.4.6)。

 

2.滿足C++的static語(yǔ)意

這里的語(yǔ)意,應(yīng)該就是1中說(shuō)的意思了吧

 

只有const沒(méi)有static的話,類的每個(gè)object都有這個(gè)const變量,也不能在類的數(shù)據(jù)成員聲明的時(shí)候一起初始化了,只能在構(gòu)造函數(shù)的初始化列表里初始化。

 

//下面是網(wǎng)上看到的內(nèi)容:

+++++++++++++++++++++++++

#include   <iostream.h> 

class   CDummy 

public: 
        static   int   n; //這里只是聲明
}; 

int   CDummy::n=9; //這里是定義加初始化

void   main() 

        cout < <CDummy::n < <endl; 


上面這樣完全沒(méi)問(wèn)題,但是不能直接在類中初始化,比如: 

static   int   n=9; 

+++++++++++++++++++

 

 

為什么static成員一定要在類外初始化? 

        這是因?yàn)楸籹tatic聲明的類靜態(tài)數(shù)據(jù)成員,其實(shí)體遠(yuǎn)在main()函數(shù)開(kāi)始之前就已經(jīng)在全局?jǐn)?shù)據(jù)段中誕生了(見(jiàn)《Inside   The   C++   Object   Model》page247)!其生命期和類對(duì)象是異步的,(而且靜態(tài)語(yǔ)意說(shuō)明即使沒(méi)有類實(shí)體的存在,其靜態(tài)數(shù)據(jù)成員的實(shí)體也是存的)這個(gè)時(shí)候?qū)ο蟮纳谶€沒(méi)有開(kāi)始,如果你要到類中去初始化類靜態(tài)數(shù)據(jù)成員,讓靜態(tài)數(shù)據(jù)成員的初始化依賴于類的實(shí)體,,那怎么滿足前述靜態(tài)語(yǔ)意呢?難道類永遠(yuǎn)不被實(shí)例化,我們就永遠(yuǎn)不能訪問(wèn)到被初始化的靜態(tài)數(shù)據(jù)成員嗎? 

            所以我的朋友,為了滿足C++的static語(yǔ)意,static成員一定要在類外初始化!

功不成,身已退
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
只有靜態(tài)常量整型數(shù)據(jù)成員才可以在類中初始化
C++靜態(tài)成員與靜態(tài)成員函數(shù)小結(jié)
static和const修飾的類成員
C++??static、const和static?const?以及它們的初始化_Heart...
c++ 靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)
linux C/C++服務(wù)器后臺(tái)開(kāi)發(fā)面試題總結(jié)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服