欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當前位置:主頁 > 軟件編程 > C語言 >

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

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C語言|點擊: 次

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

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

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

定義方法:

復制代碼 代碼如下:

const 類型名 變量名;

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

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

復制代碼 代碼如下:

#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ù)成員的定義的方式:

復制代碼 代碼如下:

static int num;

訪問方式:

可以通過類名直接訪問:

復制代碼 代碼如下:

Test::s_num;

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

one.s_num;

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

#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ù)成員確實可以被所有的對象進行引用,并且值都是相同的,因為它本身就不屬于任何一個對象。

上一篇:C++中單鏈表的建立與基本操作

欄    目:C語言

下一篇:C++中棧結(jié)構(gòu)建立與操作詳細解析

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

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/3970.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進行處理、任何非本站因素導致的法律后果,本站均不負任何責任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有