日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产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ù)據(jù)類型(int)和類名限定(A::),就像類的函數(shù)成員實(shí)現(xiàn)時必須寫上函數(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ù)只能訪問該類的靜態(tài)數(shù)據(jù)成員或靜態(tài)函數(shù)成員。如果要訪問非靜態(tài)數(shù)據(jù)成員必須通過參數(shù)傳遞得到類對象名,然后通過對象名來訪問。如下:

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ù)成員只能通過構(gòu)造函數(shù)初始化列表來獲取初值。常數(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;     //正確,能對靜態(tài)數(shù)據(jù)成員更新。
    q=111;     //錯誤,不能對普通數(shù)據(jù)成員更新。
     i=222;     //錯誤,常數(shù)據(jù)成員初始化后不能更新。
   cout<<i<<endl<<q<<endl<<k;   //正確,能訪問所有數(shù)據(jù)成員。
}

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

 

類的const對象(常對象)

const A(123,456);

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

 

類的靜態(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;                  //錯誤,靜態(tài)常數(shù)據(jù)成員也是常數(shù)據(jù)成員,常數(shù)據(jù)成員得到初值后不能更新。
    cout<<i<<endl<<q<<endl<<k;    //正確,能訪問靜態(tài)常數(shù)據(jù)成員。

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多