2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文av色

分享

static和const修飾的類成員

 火離 2010-03-17

static和const修飾的類成員

 

類的static靜態(tài)數(shù)據(jù)成員:

class A
{
   public:
      static int i ;
};

初始化方法: int  A::k=100;     

 //靜態(tài)成員變量的初值只應(yīng)該設(shè)定一次,不要把初始化操作放在類的構(gòu)造函數(shù)中,因?yàn)闃?gòu)造函數(shù)可能一再被調(diào)用,也不要放在類的頭文件中,因?yàn)轭^文件可能被載入許多地方從而被執(zhí)行許多次。初始化時(shí)必須寫上數(shù)據(jù)類型(int)和類名限定(A::),就像類的函數(shù)成員實(shí)現(xiàn)時(shí)必須寫上函數(shù)返回值類型和類名限定一樣。

 

類的static靜態(tài)函數(shù)成員:

class A
{
   public:
      static void  fun( ) ;
};

實(shí)現(xiàn)方法: 

void A::fun( )
  {cout<<"class A fun()!";}

//在類的源文件.cpp里進(jìn)行函數(shù)實(shí)現(xiàn),實(shí)現(xiàn)方法跟普通函數(shù)成員的實(shí)現(xiàn)一樣。類的靜態(tài)函數(shù)只能訪問(wèn)該類的靜態(tài)數(shù)據(jù)成員或靜態(tài)函數(shù)成員。如果要訪問(wèn)非靜態(tài)數(shù)據(jù)成員必須通過(guò)參數(shù)傳遞得到類對(duì)象名,然后通過(guò)對(duì)象名來(lái)訪問(wèn)。如下:

class A
{
public:
    static void  fun(A a ) ;
    int i;
}
;

函數(shù)實(shí)現(xiàn):

void A::fun(A a )
{  
 a.i=55; 
 cout<<a.i;
}

 

類的const常數(shù)據(jù)成員:

class A
{
public:
    A(int j);
    const int i;
}
;

初始化方法:

A::A(int j):i(j)
{  }

//常數(shù)據(jù)成員只能通過(guò)構(gòu)造函數(shù)初始化列表來(lái)獲取初值。常數(shù)據(jù)成員得到初值后不能更新。

 

類的const常函數(shù)成員:

class A
{
public:
    A(int j,int m);
    const int i;
    int q;
    static int k;
    void  fun( )  const
}
;

 

函數(shù)實(shí)現(xiàn):

A::A(int j,int m ):i(j),q(m)
{  }

int A::k=456;

void A::fun( ) const
{   k=789;     //正確,能對(duì)靜態(tài)數(shù)據(jù)成員更新。
    q=111;     //錯(cuò)誤,不能對(duì)普通數(shù)據(jù)成員更新。
     i=222;     //錯(cuò)誤,常數(shù)據(jù)成員初始化后不能更新。
   cout<<i<<endl<<q<<endl<<k;   //正確,能訪問(wèn)所有數(shù)據(jù)成員。
}

//常函數(shù)成員能訪問(wèn)常數(shù)據(jù)成員,靜態(tài)數(shù)據(jù)成員和普通數(shù)據(jù)成員,但不能對(duì)常數(shù)據(jù)成員和普通數(shù)據(jù)成員更新。

 

類的const對(duì)象(常對(duì)象)

const A(123,456);

類的常對(duì)象只能調(diào)用該類的常函數(shù)成員,由于常函數(shù)成員不能對(duì)常數(shù)據(jù)成員和普通數(shù)據(jù)成員更新,只能對(duì)靜態(tài)數(shù)據(jù)成員更新,所以常對(duì)象不能修改自己的數(shù)據(jù)成員,也因此才能叫常對(duì)象。(靜態(tài)成員不屬于一個(gè)對(duì)象而屬于整個(gè)類。)

 

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

class A
{
public:
    A(int j,int m);
   const int i;
   int q;
   static const int k;
   void  fun( )  const ; 
}
;

函數(shù)實(shí)現(xiàn):

A::A(int j,int m):i(j),q(m)
{  }

const int A::k=789;     //類的靜態(tài)常數(shù)據(jù)成員類似于靜態(tài)數(shù)據(jù)成員賦初值,但要記得前面加const。

void A::fun( ) const
{   k=111;                  //錯(cuò)誤,靜態(tài)常數(shù)據(jù)成員也是常數(shù)據(jù)成員,常數(shù)據(jù)成員得到初值后不能更新。
    cout<<i<<endl<<q<<endl<<k;    //正確,能訪問(wèn)靜態(tài)常數(shù)據(jù)成員。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多