這篇文章主要為大家展示了“C++類的靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)怎么用”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“C++類的靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)怎么用”這篇文章吧。
我們提供的服務(wù)有:網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、寶雞ssl等。為上千多家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的寶雞網(wǎng)站制作公司靜態(tài)數(shù)據(jù)成員·用關(guān)鍵字static聲明
·當(dāng)聲明類的數(shù)據(jù)成員為靜態(tài)時(shí),無(wú)論創(chuàng)建多少個(gè)類的對(duì)象,靜態(tài)成員都只有一個(gè)副本
·在類的所有對(duì)象中共享,具有靜態(tài)生存期
·若不存在其他的初始化語(yǔ)句,在創(chuàng)建第一個(gè)對(duì)象時(shí),所有的靜態(tài)數(shù)據(jù)成員被初始化為零
·在類外定義和初始化,用范圍解析運(yùn)算符(::)來指明所屬的類
舉例:
#include <iostream> using namespace std; class Box { public: static int count; //若該靜態(tài)數(shù)據(jù)成員在private部分聲明,則只能通過靜態(tài)成員函數(shù)處理 Box(double l = 2.0, double b = 2.0, double h = 2.0) { cout << "One constructor was called." << endl; length = l, width = b, height = h; count++; //每創(chuàng)建一個(gè)對(duì)象時(shí)加1 } double Volume() { return length * width * height; } ~Box() { count--; } private: double length, width, height; }; //初始化類Box的靜態(tài)成員 int Box::count = 0; int main(void) { Box Box1(3.3, 1.2, 1.5); Box Box2(8.5, 6.0, 2.0); cout << "Total objects: " << Box::count << endl; //輸出對(duì)象的總數(shù) return 0; }靜態(tài)成員函數(shù)
把成員函數(shù)聲明為靜態(tài)的,就可以把函數(shù)與類的任何特定對(duì)象獨(dú)立開來
·在類對(duì)象不存在的情況下也能被調(diào)用,使用類名加范圍解析運(yùn)算符 :: 即可訪問
·靜態(tài)成員函數(shù)只能訪問靜態(tài)成員數(shù)據(jù)、其他靜態(tài)成員函數(shù)和類外部的其他函數(shù)
·靜態(tài)成員函數(shù)有一個(gè)類范圍,不能訪問類的 this 指針,可以使用靜態(tài)成員函數(shù)來判斷類的某些對(duì)象是否已被創(chuàng)建
·用靜態(tài)成員函數(shù)訪問非靜態(tài)成員,需通過對(duì)象
舉例:
#include <iostream> using namespace std; class Box { public: static int count; Box(double l = 2.0, double b = 2.0, double h = 2.0) { cout <<"One constructor was called." << endl; length = l, width = b, height = h; count++; } double Volume() { return length * width * height; } static int getCount() { //靜態(tài)成員函數(shù) return count; } private: double length, width, height; }; int Box::count = 0; int main(void) { //在創(chuàng)建對(duì)象之前輸出對(duì)象的總數(shù) cout << "Inital Stage Count: " << Box::getCount() << endl; Box Box1(3.3, 1.2, 1.5); Box Box2(8.5, 6.0, 2.0); //在創(chuàng)建對(duì)象之后輸出對(duì)象的總數(shù) cout << "Final Stage Count: " << Box::getCount() << endl; return 0; }
注:
靜態(tài)成員函數(shù)與普通成員函數(shù)的區(qū)別:
·靜態(tài)成員函數(shù)沒有 this 指針,只能訪問靜態(tài)成員(包括靜態(tài)成員變量和靜態(tài)成員函數(shù))
·普通成員函數(shù)有 this 指針,可以訪問類中的任意成員;而靜態(tài)成員函數(shù)沒有 this 指針
使用靜態(tài)成員了解構(gòu)造與析構(gòu)函數(shù)的調(diào)用情況
#include <iostream> using namespace std; class A { friend class B; //類B是類A的友元 public: static int value; static int num; A(int x, int y) { xp = x, yp = y; value++; cout << "調(diào)用構(gòu)造:" << value << endl; } void displayA() { cout << xp << "," << yp << endl; } ~A() { num++; cout << "調(diào)用析構(gòu):" << num << endl; } private: int xp, yp; }; class B { public: B(int x1, int x2) : mpt1(x1 + 2, x2 - 2), mpt2(x1, x2) { cout << "調(diào)用構(gòu)造\n"; //mpt是類A的對(duì)象,有幾個(gè)mpt,有關(guān)類A的操作便執(zhí)行幾次 } void set(int m, int n); void displayB(); ~B() { cout << "調(diào)用析構(gòu)\n"; //析構(gòu)函數(shù)在類結(jié)束前調(diào)用,類結(jié)束的時(shí)候釋放類申請(qǐng)的空間 } private: A mpt1, mpt2; //將A類的對(duì)象聲明為B類的私有數(shù)據(jù)成員 }; int A::value = 0; int A::num = 0; void B::set(int m, int n) { mpt1.xp = m * 2, mpt1.yp = n / 2; } void B::displayB() { mpt1.displayA(); } int main() { B p(10, 20); cout << "Hello world!" << endl; B displayB(); //通過友元,使類B輸出類A的私有數(shù)據(jù)成員 return 0; }
以上是“C++類的靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
新聞名稱:C++類的靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)怎么用-創(chuàng)新互聯(lián)
本文鏈接:http://jinyejixie.com/article32/dishpc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、ChatGPT、軟件開發(fā)、網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、微信公眾號(hào)
聲明:本網(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í)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容