日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

C/Cpp / 类中静态成员变量和普通成员变量的区别

發(fā)布時(shí)間:2024/10/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C/Cpp / 类中静态成员变量和普通成员变量的区别 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
2017-12-11 ? ?創(chuàng)建人:Ruo_Xiao

實(shí)例代碼:

#include <iostream> class CMan { public:CMan() {}~CMan() {} public:int k_;// 僅僅是聲明。static int i_; };// 定義,申請(qǐng)內(nèi)存。 int CMan::i_ = 0;int main() {//CMan::k = 15; ?//error: 對(duì)非靜態(tài)成員“CMan::k”的非法引用CMan::i_ = 10;CMan *p1 = new CMan();CMan *p2 = new CMan();p1->k_ = 15;std::cout << "第一次測(cè)試" << "\n";std::cout << "i_ = " << CMan::i_ << "\n";std::cout << "k_ = " << p1->k_ << "\n" << "\n";p2->k_ = 20;CMan::i_ = 30;std::cout << "第二次測(cè)試" << "\n";std::cout << "i_ = " << CMan::i_ << "\n";std::cout << "k_ = " << p2->k_ << "\n";std::cin.get();delete p1; p1 = nullptr;delete p2; p2 = nullptr;return 0; }


運(yùn)行結(jié)果:

第一次測(cè)試 i_ = 10 k_ = 15第二次測(cè)試 i_ = 30 k_ = 20

由上述代碼可知二者的不同:
一、根本點(diǎn)
(1)普通成員變量:在每一個(gè)類對(duì)象中定義一次,互相直接不受影響。
(2)靜態(tài)成員變量:類外定義一次,所有對(duì)象共享此內(nèi)存塊。
二、聲明方式
(1)普通成員變量:int i;
(2)靜態(tài)成員變量:static int i;
三、定義位置(內(nèi)存分配位置)

?1. 普通成員變量 :
?- 若CMan A,則存儲(chǔ)在棧(stack)中;
?
?- 若CMan *pA = new CMan(),則存儲(chǔ)在堆(heap)中 。
?
?2. 靜態(tài)成員變量:全局區(qū)(靜態(tài)區(qū))。
解釋:因?yàn)轭愳o態(tài)成員變量不能在類中定義,故只能定義在類外,即存儲(chǔ)位置在全局區(qū)(若類中可以定義,則每一個(gè)對(duì)象都可以為此靜態(tài)成員變量申請(qǐng)內(nèi)存,就不能達(dá)到所有對(duì)象共享此靜態(tài)成員變量的目的)。

四、初始化位置

?1. 普通成員變量:類中,通常在構(gòu)造函數(shù)中。
?2. 靜態(tài)成員變量:可以在類中初始化,但需要明白,如果在構(gòu)造函數(shù)中初始化,則每一次申請(qǐng)一個(gè)此類的新的對(duì)象,此變量都會(huì)被重新初始化。所以通常在類外進(jìn)行一次初始化即可。一般系統(tǒng)缺省初始為0。

五、注意

?1. 靜態(tài)成員變量的應(yīng)用之一就是記錄此類申請(qǐng)了多少個(gè)對(duì)象(這樣能夠理解這種變量類型的意義了吧)。
?2. 聲明靜態(tài)成員變量是需加上關(guān)鍵字“static”,定義靜態(tài)成員變量時(shí)不可加關(guān)鍵字“static”。
?3. 靜態(tài)成員仍然遵循public,private,protected訪問(wèn)準(zhǔn)則。
?4. 聲明:告訴編譯器,有個(gè)某類型的變量將來(lái)需要被申請(qǐng)內(nèi)存。
? ? ?定義:為變量申請(qǐng)內(nèi)存。
? ?初始化:對(duì)已經(jīng)申請(qǐng)了內(nèi)存的變量賦一個(gè)初始值。
?5. 實(shí)例代碼鏈接:http://download.csdn.net/download/itworld123/10154070

總結(jié)

以上是生活随笔為你收集整理的C/Cpp / 类中静态成员变量和普通成员变量的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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