溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C#中Static修飾的作用是什么

發(fā)布時間:2021-07-07 16:21:08 來源:億速云 閱讀:505 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關(guān)C#中Static修飾的作用是什么,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

1.類的靜態(tài)成員:

classA  {  private  staticints_  }   intA::s_=0 //注意,這里沒有static的修飾!

類的靜態(tài)成員是該類所有實例的共用成員,也就是在該類的范疇內(nèi)是個全局變量,也可以理解為是一個名為A::s_的全局變量,只不過它是帶有類安全屬性的,道理很簡單,因為它是在程序初始化的時候分配的,所以只分配一次,所以就是共用的,
類的靜態(tài)成員必須初始化,道理也是一樣的,因為它是在程序初始化的時候分配的,所以必須有初始化,類中只是聲明,在cpp中才是初始化,你可以在初始化的代碼上放個斷點,在程序執(zhí)行main的***條語句之前就會先走到那,如果你的靜態(tài)成員是個類,那么就會調(diào)用到它的構(gòu)造函數(shù)。

2.類的靜態(tài)函數(shù):

classA  {  private:  staticvoidfunc(int);  }

實現(xiàn)的時候也不需要C# Static修飾,因為Static是聲明性關(guān)鍵字,類的靜態(tài)函數(shù)是在該類的范疇內(nèi)的全局函數(shù),不能訪問類的私有成員,只能訪問類的靜態(tài)成員,不需要類的實例即可調(diào)用,實際上,它就是增加了類的訪問權(quán)限的全局函數(shù):void A::func(int),靜態(tài)成員函數(shù)可以繼承和覆蓋,但無法是虛函數(shù)。

3.只在cpp內(nèi)有效的全局變量:

在cpp文件的全局范圍內(nèi)聲明:
Static int g_ = 0  這個變量的含義是在該cpp內(nèi)有效,但是其他的cpp文件不能訪問這個變量,如果有兩個cpp文件聲明了同名的全局靜態(tài)變量,那么他們實際上是獨立的兩個變量。

如果不使用Static聲明全局變量:
int g_ = 0  那么將無法保證這個變量不被別的cpp共享,也無法保證一定能被別的cpp共享,因為要讓多個cpp共享一個全局變量,應(yīng)將它聲明為extern(外部)的,也有可能編譯會報告變量被重復(fù)定義,總之不建議這樣的寫法,不明確這個全局變量的用法。

如果在一個頭文件中聲明:
Static int g_vaule = 0  那么會為每個包含該頭文件的cpp都創(chuàng)建一個全局變量,但他們都是獨立的,所以也不建議這樣的寫法,一樣不明確需要怎樣使用這個變量,因為只是創(chuàng)建了一組同名而不同作用域的變量。

這里順便說一下如何聲明所有cpp可共享的全局變量,在頭文件里聲明為extern的:
extern int g_  注意,不要初始化值!

然后在其中任何一個包含該頭文件的cpp中初始化(一次)就好:
int g_ = 0  初始化一樣不要extern修飾,因為extern也是聲明性關(guān)鍵字。
然后所有包含該頭文件的cpp文件都可以用g_這個名字訪問相同的一個變量。

4.只在cpp內(nèi)有效的全局函數(shù):

在cpp內(nèi)聲明:
Static void func()  函數(shù)的實現(xiàn)不需要C# Static修飾,那么這個函數(shù)只可在本cpp內(nèi)使用,不會同其他cpp中的同名函數(shù)引起沖突,道理和如果不使用Static會引起的問題和第3點一樣,不要在頭文件中聲明Static的全局函數(shù),不要在cpp內(nèi)聲明非Static的全局函數(shù),如果你要在多個cpp中復(fù)用該函數(shù),就把它的聲明提到頭文件里去,否則在cpp內(nèi)部聲明需要加上C# Static修飾,在C語言中這點由為重要!

關(guān)于C#中Static修飾的作用是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI