溫馨提示×

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

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

Static中如何進(jìn)行C++類的數(shù)據(jù)共享

發(fā)布時(shí)間:2021-10-27 17:28:12 來源:億速云 閱讀:207 作者:柒染 欄目:編程語言

這篇文章給大家介紹Static中如何進(jìn)行C++類的數(shù)據(jù)共享,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

C++語言是對(duì)C語言的一個(gè)延伸,也就是說,一個(gè)C語言的程序,也可以認(rèn)為是一個(gè)C++程序,對(duì)于在C++類中,靜態(tài)成員可以實(shí)現(xiàn)多個(gè)對(duì)象之間的數(shù)據(jù)共享。

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

C++類中,靜態(tài)成員可以實(shí)現(xiàn)多個(gè)對(duì)象之間的數(shù)據(jù)共享,并且使用靜態(tài)數(shù)據(jù)成員還不會(huì)破壞隱藏的原則,即保證了安全性。因此,靜態(tài)成員是類的所有對(duì)象中共享的成員,而不是某個(gè)對(duì)象的成員。

使用靜態(tài)數(shù)據(jù)成員可以節(jié)省內(nèi)存,因?yàn)樗撬袑?duì)象所公有的,因此,對(duì)多個(gè)對(duì)象來說,靜態(tài)數(shù)據(jù)成員只存儲(chǔ)一處,供所有對(duì)象共用。靜態(tài)數(shù)據(jù)成員的值對(duì)每個(gè)對(duì)象都是一樣,但它的值是可以更新的。只要對(duì)靜態(tài)數(shù)據(jù)成員的值更新一次,保證所有對(duì)象存取更新后的相同的值,這樣可以提高時(shí)間效率。

靜態(tài)數(shù)據(jù)成員的使用方法和注意事項(xiàng)如下:

1、靜態(tài)數(shù)據(jù)成員在定義或說明時(shí)前面加關(guān)鍵字static。

2、靜態(tài)成員初始化與一般數(shù)據(jù)成員初始化不同。靜態(tài)數(shù)據(jù)成員初始化的格式如下:

<數(shù)據(jù)類型><C++類名>::<靜態(tài)數(shù)據(jù)成員名>=<值>

這表明:

(1)初始化在類體外進(jìn)行,而前面不加static,以免與一般靜態(tài)變量或?qū)ο笙嗷煜?/p>

(2)初始化時(shí)不加該成員的訪問權(quán)限控制符private,public等。

(3)初始化時(shí)使用作用域運(yùn)算符來標(biāo)明它所屬類,因此,靜態(tài)數(shù)據(jù)成員是類的成員,而不是對(duì)象的成員。

3、靜態(tài)數(shù)據(jù)成員是靜態(tài)存儲(chǔ)的,它是靜態(tài)生存期,必須對(duì)它進(jìn)行初始化。

4、引用靜態(tài)數(shù)據(jù)成員時(shí),采用如下格式:

<類名>::<靜態(tài)成員名>

如果靜態(tài)數(shù)據(jù)成員的訪問權(quán)限允許的話(即public的成員),可在程序中,按上述格式來引用靜態(tài)數(shù)據(jù)成員。下面舉一例子,說明靜態(tài)數(shù)據(jù)成員的應(yīng)用:

#include   class Myclass  {  public:  Myclass(int a, int b, int c);  void GetNumber();  void GetSum();  private:  int A, B, C;  static int Sum;  };   int Myclass::Sum = 0;   Myclass::Myclass(int a, int b, int c)  {  A = a;  B = b;  C = c;  Sum += A+B+C;  }   void Myclass::GetNumber()  {  cout<<"Number="<<<","<<<","<< }   void Myclass::GetSum()  {  cout<<"Sum="<< }   void main()  {  Myclass M(3, 7, 10),N(14, 9, 11);  M.GetNumber();  N.GetNumber();  M.GetSum();  N.GetSum();  }

從輸出結(jié)果可以看到Sum的值對(duì)M對(duì)象和對(duì)N對(duì)象都是相等的。這是因?yàn)樵诔跏蓟疢對(duì)象時(shí),將C++類的三個(gè)int型數(shù)據(jù)成員的值求和后賦給了Sum,于是 Sum保存了該值。在初始化N對(duì)象時(shí)。

對(duì)將N對(duì)象的三個(gè)int型數(shù)據(jù)成員的值求和后又加到Sum已有的值上,于是Sum將保存另后的值。所以,不論是通過對(duì)象M還是通過對(duì)象N來引用的值都是一樣的,即為54,現(xiàn)在,幾乎每個(gè)學(xué)習(xí)C++的都知道C++的核心問題是其復(fù)雜性;甚至本身不在C++社群的,也知道這是事實(shí)。群眾的眼睛是雪亮的,何況這還是個(gè)太顯而易見的事實(shí)。

關(guān)于Static中如何進(jìn)行C++類的數(shù)據(jù)共享就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

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

AI