最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++類中的常數(shù)據(jù)成員與靜態(tài)數(shù)據(jù)成員之間的區(qū)別

 更新時間:2013年10月15日 08:43:51   作者:  
常數(shù)據(jù)成員是指在類中定義的不能修改其值的一些數(shù)據(jù)成員,類似于我們以前學過的常變量,雖然是變量,也有自己的地址,但是一經(jīng)賦初值,便不能再被修改

剛開始學習C++的類和對象的部分,對類中的常數(shù)據(jù)成員和靜態(tài)數(shù)據(jù)成員的概念和用法經(jīng)?;煜越裉煺硪幌?,順便說一下,今天是我的生日,祝我生日快樂,呵呵。

常數(shù)據(jù)成員
常數(shù)據(jù)成員是指在類中定義的不能修改其值的一些數(shù)據(jù)成員,類似于我們以前學過的常變量,雖然是變量,也有自己的地址,但是一經(jīng)賦初值,便不能再被修改。

適用于類中定義一些初始化之后不希望被修改的變量。

定義方法:

復(fù)制代碼 代碼如下:

const 類型名 變量名;

(1)類中的常數(shù)據(jù)成員只能通過構(gòu)造函數(shù)的參數(shù)初始化表進行初始化。

(2)常數(shù)據(jù)成員是實例化對象的一部分,可以用this指針訪問。

復(fù)制代碼 代碼如下:

#include<iostream>
using namespace std;
class Happy_birthday
{
 public:
   Happy_birthday(char * na):name(na){}
   void Print()
   {
    cout<<name<<" Happy Birthday!"<<endl;
   }
 private:
  const char * name;
};
int main()
{
 Happy_birthday qianshou("趙哲");
 qianshou.Print();
 return 0;
}

運行結(jié)果:



靜態(tài)數(shù)據(jù)成員
其實常數(shù)據(jù)成員和靜態(tài)數(shù)據(jù)成員完全是兩碼事,只不過一開始學習的時候容易混淆罷了。通過上面的解釋,我們知道常數(shù)據(jù)成員類似常變量,是一種一經(jīng)賦值就不可以改變的變量。

它們最大的區(qū)別就是靜態(tài)數(shù)據(jù)成員是可以被修改的,而且可以被任何一個對象修改,修改后的值,可以被所有的對象共享。

靜態(tài)數(shù)據(jù)成員是屬于一個類的而不是某一個對象,它是為該類所定義的所有的對象所共有。該類所定義的對象都可以引用該靜態(tài)成員,并且值都是一樣的。

靜態(tài)數(shù)據(jù)成員的存儲空間不同于普通的數(shù)據(jù)成員,它不屬于類的任何一個對象,是獨立于對象存儲的,因此也不可以通過對象的this指針來訪問。

并且,靜態(tài)數(shù)據(jù)成員不可以用參數(shù)初始化表進行初始化操作,原因很簡單,因為初始化表是在定義對象的時候進行的利用了this指針進行操作,所以不可以。

靜態(tài)數(shù)據(jù)成員的定義的方式:

復(fù)制代碼 代碼如下:

static int num;

訪問方式:

可以通過類名直接訪問:

復(fù)制代碼 代碼如下:

Test::s_num;

也可以通過對象名訪問:
復(fù)制代碼 代碼如下:

one.s_num;

不過為了區(qū)別于其他的成員變量,一般使用類名進行訪問,因為靜態(tài)數(shù)據(jù)成員不屬于對象,以免使人誤解。
復(fù)制代碼 代碼如下:

#include<iostream>
using namespace std;
class Test
{
 public:
  Test(int n):c_num(n){};//只能用初始化表對常數(shù)據(jù)成員賦初值
  void show()
  {
   cout<<"c_num:"<<this->c_num<<endl;
   cout<<"s_num:"<<s_num<<endl;
  }
  void change(int n)
  {
   s_num=n; 
  }
  static int s_num;
 private:
  const  int c_num;
};
int Test::s_num=100;//在類體為對靜態(tài)數(shù)據(jù)成員賦初值
int main()
{
 Test one(10);
 one.show();
 one.change(10000);//改變靜態(tài)數(shù)據(jù)成員的值
 cout<<"one changeed:"<<one.s_num<<endl; //使用對象名one間接訪問靜態(tài)數(shù)據(jù)成員
 cout<<"Test changeed:"<<Test::s_num<<endl;//使用類名直接訪問靜態(tài)數(shù)據(jù)成員
 Test two(20);
 cout<<"two changeed:"<<two.s_num<<endl; //使用對象名two間接訪問靜態(tài)數(shù)據(jù)成員
 two.change(99);
 cout<<"Test changeed:"<<Test::s_num<<endl;//使用類名直接訪問靜態(tài)數(shù)據(jù)成員
 return 0;
}

運行結(jié)果:

分析: 我們在程序中可以使用類名直接訪問靜態(tài)數(shù)據(jù)成員變量,就直接說明了它不屬于任何一個對象的這個特點。 我們在定義對象two的時候只對c_num進行了賦值,但是我們使用two.s_num進行輸出的時候也是可以輸出的,這也說明了這個數(shù)據(jù)成員確實可以被所有的對象進行引用,并且值都是相同的,因為它本身就不屬于任何一個對象。

相關(guān)文章

  • C++通過boost.date_time進行時間運算

    C++通過boost.date_time進行時間運算

    這篇文章介紹了C++通過boost.date_time進行時間運算的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • 一文帶你認識C語言的聯(lián)合體和枚舉

    一文帶你認識C語言的聯(lián)合體和枚舉

    聯(lián)合體(Union)是一種特殊的數(shù)據(jù)結(jié)構(gòu),允許在同一內(nèi)存地址上存儲不同類型的數(shù)據(jù),這篇文章主要給大家介紹了關(guān)于C語言聯(lián)合體和枚舉的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-10-10
  • Qt與Web混合開發(fā)實現(xiàn)雙向通信的示例

    Qt與Web混合開發(fā)實現(xiàn)雙向通信的示例

    本文主要介紹了Qt與Web混合開發(fā)實現(xiàn)雙向通信的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • C語言實現(xiàn)快速排序的方法及優(yōu)化

    C語言實現(xiàn)快速排序的方法及優(yōu)化

    這篇文章主要介紹了C語言實現(xiàn)快速排序的方法及優(yōu)化,快速排序是Hoare于1962年提出的一種二叉樹結(jié)構(gòu)的交換排序方法,下面我們來看一看傳說中的快速排序的特點與效率怎么樣,需要的朋友可以參考下
    2023-07-07
  • C++中結(jié)構(gòu)體和Json字符串互轉(zhuǎn)的問題詳解

    C++中結(jié)構(gòu)體和Json字符串互轉(zhuǎn)的問題詳解

    這篇文章主要給大家介紹了關(guān)于C++中結(jié)構(gòu)體和Json字符串互轉(zhuǎn)問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • C++?Boost?Lambda表達式詳解

    C++?Boost?Lambda表達式詳解

    Lambda?表達式(lambda?expression)是一個匿名函數(shù),Lambda表達式基于數(shù)學中的λ演算得名。本文就來為大家詳細講講C++中Lambda表達式的使用,需要的可以參考一下
    2022-11-11
  • 利用c++編寫簡易版2048小游戲

    利用c++編寫簡易版2048小游戲

    這篇文章主要介紹了如何讓利用c++編寫簡易版的2048小游戲,感興趣的小伙伴請參考下面文章的具體內(nèi)容
    2021-09-09
  • 詳談C++ socket網(wǎng)絡(luò)編程實例

    詳談C++ socket網(wǎng)絡(luò)編程實例

    這篇文章主要為大家介紹了C++ socket網(wǎng)絡(luò)編程實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • C語言實現(xiàn)動態(tài)鏈表的示例代碼

    C語言實現(xiàn)動態(tài)鏈表的示例代碼

    本文主要介紹了C語言實現(xiàn)動態(tài)鏈表的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05
  • C語言實現(xiàn)紙牌24點小游戲

    C語言實現(xiàn)紙牌24點小游戲

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)紙牌24點小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10

最新評論

台北市| 桐梓县| 镇沅| 黑龙江省| 思茅市| 绥阳县| 滁州市| 海林市| 滦南县| 克什克腾旗| 高碑店市| 巍山| 江孜县| 墨脱县| 长丰县| 昆明市| 教育| 平潭县| 邻水| 商南县| 胶南市| 突泉县| 乌拉特前旗| 普安县| 三河市| 巨鹿县| 外汇| 武乡县| 黄浦区| 鸡西市| 紫金县| 嘉禾县| 双流县| 启东市| 大港区| 康定县| 怀集县| 德兴市| 礼泉县| 龙岩市| 丹巴县|