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

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

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

C++类与static关键字

發(fā)布時(shí)間:2025/4/5 c/c++ 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++类与static关键字 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

五句話概括:靜態(tài)成員變量和靜態(tài)成員函數(shù)都屬于類的,不屬于具體某個(gè)對(duì)象。

? ? ? ? ? ? ? ? ? ? ?靜態(tài)成員變量定義時(shí),可以在類外定義,不受訪問(wèn)權(quán)限限制,但是在訪問(wèn)時(shí),卻要遵循訪問(wèn)權(quán)限限制。

? ? ? ? ? ? ? ? ? ? ?靜態(tài)成員函數(shù)只能訪問(wèn)靜態(tài)成員變量。普通函數(shù)既可以訪問(wèn)靜態(tài)成員變量,也可以訪問(wèn)普通成員變量。

? ? ? ? ? ? ? ? ? ? ?靜態(tài)成員變量存在的意義是實(shí)現(xiàn)數(shù)據(jù)的共享。

? ? ? ? ? ? ? ? ? ? ?在靜態(tài)成員函數(shù)內(nèi)部可以聲明靜態(tài)變量,注意不是靜態(tài)成員變量。如果在靜態(tài)成員函數(shù)內(nèi)部聲明一個(gè)靜態(tài)變量,則該類的所有對(duì)象將共享這個(gè)變量。

靜態(tài)成員變量

靜態(tài)成員變量屬于類而不屬于任何一個(gè)對(duì)象,如此一來(lái)可以實(shí)現(xiàn)數(shù)據(jù)共享功能。靜態(tài)成員變量不會(huì)影響類及其對(duì)象的大小,也即sizeof結(jié)果不會(huì)受到影響。

靜態(tài)成員變量如果被設(shè)置為private或protected屬性,則在類外同樣無(wú)法訪問(wèn),但定義該變量的時(shí)候卻不受此限制,如例2所示,雖然靜態(tài)成員變量count為private屬性,但是它在類外定義的時(shí)候不受private限制。

class student { public:student(){count ++;}~student(){count --;} private:static int count;//其它成員變量 }; int student::count = 0;//靜態(tài)成員變量可以在外部用類名加上域解析符“::”加上變量名的形式定義

靜態(tài)成員函數(shù)

靜態(tài)成員函數(shù)只能訪問(wèn)靜態(tài)成員變量,而不能訪問(wèn)非靜態(tài)成員變量。普通成員函數(shù)(包括構(gòu)造函數(shù)和析構(gòu)函數(shù))既可以訪問(wèn)普通成員變量,同時(shí)又可以訪問(wèn)靜態(tài)成員變量。

#include<iostream> using namespace std;class test { public:test(int a, int b){num = a; plus = b;}static int getnum(){return num;}static int add(){return num+plus;} //compile errorvoid setnum(int a){num = a;}void setplus(int a){plus = a;} private:static int num;int plus; }; int test::num = 1;int main() {test one;one.setnum(5);cout<<test::getnum()<<endl;return 0; }

訪問(wèn)靜態(tài)成員變量和靜態(tài)成員函數(shù)均有兩種方式,其一是和普通的成員變量成員函數(shù)相同,通過(guò)對(duì)象來(lái)訪問(wèn),其二則是可以通過(guò)類名加上域解析操作符訪問(wèn)。當(dāng)然訪問(wèn)過(guò)程中仍然要遵循private、protected和public關(guān)鍵字的訪問(wèn)權(quán)限限定。訪問(wèn)靜態(tài)成員變量和靜態(tài)成員函數(shù)首選的方法是通過(guò)類來(lái)訪問(wèn),畢竟靜態(tài)成員變量和靜態(tài)成員函數(shù)都是屬于類的,與類相關(guān)聯(lián),而不是屬于類的對(duì)象。普通成員變量或成員函數(shù)不可以通過(guò)類來(lái)訪問(wèn)。由于靜態(tài)成員變量和靜態(tài)成員函數(shù)都是屬于類,而不是屬于對(duì)象,因此靜態(tài)成員函數(shù)內(nèi)部也不存在this指針,因?yàn)殪o態(tài)成員函數(shù)不屬于對(duì)象。

在靜態(tài)成員函數(shù)內(nèi)部可以聲明靜態(tài)變量,注意不是靜態(tài)成員變量。如果在靜態(tài)成員函數(shù)內(nèi)部聲明一個(gè)靜態(tài)變量,則該類的所有對(duì)象將共享這個(gè)變量。
?

#include<iostream> using namespace std;class test { public:static void add(int a); };void test::add(int a) {static int num = 0;int count = 0;num += a;count += a;cout<<num<<" "<<count<<endl; }int main() {test one,two,three;one.add(5);two.add(4);three.add(11);return 0; }

程序運(yùn)行結(jié)果:
5 5
9 4
20 11

?

總結(jié)

以上是生活随笔為你收集整理的C++类与static关键字的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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