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