class A { public: int foo( ) { return val ; } static int staFun( ) { return staVal ; } static int staVal ; private: int val ; char bit1 ; } ; class B : public A { public: char foo( ) { return bit2; } private: char bit2 ; };
為淄川等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及淄川網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、淄川網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
靜態(tài)數(shù)據(jù)成員:
它被編譯器提出于class之外,并被視為一個(gè)global變量(但只在class生命范圍之內(nèi)可見)
每個(gè)靜態(tài)數(shù)據(jù)成員只有一個(gè)實(shí)體,存放在程序的數(shù)據(jù)段之中,
經(jīng)由’.’運(yùn)算符,對(duì)一個(gè)靜態(tài)數(shù)據(jù)成員進(jìn)行存取操作,只是語(yǔ)法上的一種便宜行事而已。靜態(tài)數(shù)據(jù)成員其實(shí)并不在class object之中,因此存取它并不需要通過(guò)class object。
雖然你可以不靠class object 來(lái)存取一個(gè)靜態(tài)成員,但其存取函數(shù)卻得綁定于一個(gè)class object之上。(若靜態(tài)成員的訪問(wèn)控制為protected或private,則必須通過(guò)存取函數(shù)來(lái)訪問(wèn))
【注意:】類的靜態(tài)數(shù)據(jù)成員,必須要在全局下進(jìn)行定義,然后才能使用。
無(wú)論它的訪問(wèn)控制是什么,必須在main函數(shù)之前,對(duì)靜態(tài)數(shù)據(jù)成員定義。
例如:int A::staVal = 0 ;
否則,編譯器會(huì)報(bào)錯(cuò):未定義的引用。
因?yàn)榫幾g器把涉及靜態(tài)數(shù)據(jù)成員的使用,都轉(zhuǎn)換為直接使用,而靜態(tài)成員在class中聲明,外部無(wú)法看見。故需要在外部進(jìn)行定義,使其后的代碼可見。
成員函數(shù)的處理:
C++的設(shè)計(jì)準(zhǔn)則之一:非靜態(tài)成員函數(shù)至少和一般的外部函數(shù)有相同的存儲(chǔ)效率。
C++編譯器會(huì)把成員函數(shù)內(nèi)化為一般的函數(shù):
①改寫函數(shù)原型,安插一個(gè)額外的參數(shù)this指針。用以提供一個(gè)存取管道,使類對(duì)象得以調(diào)用該函數(shù)。
int A::foo (A* const this)
若該成員函數(shù)是const,則變成:
int A::foo (const A* const this)
②對(duì)函數(shù)體中 類對(duì)象的非靜態(tài)數(shù)據(jù)成員的存取操作,改為經(jīng)由this指針來(lái)存取。
int A::foo (A* const this)
{ return this->val ; }
③將成員函數(shù)重新寫成一個(gè)外部函數(shù),對(duì)函數(shù)名稱進(jìn)行處理,使它在程序中成為獨(dú)一無(wú)二的。
以上的轉(zhuǎn)換操作結(jié)束之后,每個(gè)調(diào)用操作都要轉(zhuǎn)換。
A objA ; A * ptr = & objA ; ptr->foo( ) ; objA.foo() ; //分別被轉(zhuǎn)換為: foo_intA( ptr ) ; foo_intA( & objA ) ;
靜態(tài)成員函數(shù):
靜態(tài)成員函數(shù)的主要特征是它沒(méi)有this指針。
故其:
①它不能夠直接存取其class中的非靜態(tài)成員
②它不能夠直接被聲明為const、virtual
③它不需要經(jīng)由class object才被調(diào)用——雖然大部分時(shí)候它是這樣被調(diào)用的。
網(wǎng)頁(yè)名稱:class內(nèi)部處理
本文網(wǎng)址:http://jinyejixie.com/article40/gcidho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、服務(wù)器托管、網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站收錄、網(wǎng)站營(yíng)銷、小程序開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
營(yíng)銷型網(wǎng)站建設(shè)知識(shí)