国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
關(guān)鍵字static總結(jié)
關(guān)鍵字static總結(jié)

http://dev.csdn.net/article/27/27663.shtm

 

static關(guān)鍵字如果不被引入C++語(yǔ)言,那就違反了C++設(shè)計(jì)中對(duì)低級(jí)語(yǔ)言設(shè)計(jì)支持規(guī)則中的”沒(méi)有無(wú)故與C語(yǔ)言不兼容規(guī)則”,原因很簡(jiǎn)單,C語(yǔ)言中存在static并發(fā)發(fā)揮著它良好的作用,所以C++同樣引入static應(yīng)該是理所當(dāng)然的,而實(shí)際C++的做法是不僅引入static,而且對(duì)它在面向?qū)ο蟪绦蛟O(shè)計(jì)中進(jìn)行擴(kuò)充(導(dǎo)入靜態(tài)數(shù)據(jù)成員和靜態(tài)函數(shù)成員的概念),這就使static的概念得到了擴(kuò)展,對(duì)于其中較新的靜態(tài)成員變量(對(duì)象)和靜態(tài)函數(shù)成員則應(yīng)該重點(diǎn)更理解,下面分別從static的作用,在C++中的分類(lèi),以及一些比較典型的應(yīng)用三個(gè)方面進(jìn)行總結(jié)一下

   一:靜態(tài)(static)的作用

首先,一個(gè)很明顯的作用就是解決了全局部名字空間的問(wèn)題,大家都知道全局變量是一處定義多處修改的,這當(dāng)然是它的優(yōu)勢(shì)但,也確實(shí)解決了不少問(wèn)題,但這對(duì)面向?qū)ο蟪绦蛩枷胧窍嗟钟|的,它破壞的良好的封裝性,污染了程序的名稱(chēng)空間,而對(duì)于這些缺點(diǎn)的,正是static能夠解決的問(wèn)題,我們可以在函數(shù),結(jié)構(gòu),類(lèi)中定義靜態(tài)對(duì)象,當(dāng)將變量定義為static時(shí),編譯器就會(huì)將變量的存儲(chǔ)在程序的靜態(tài)存儲(chǔ)區(qū)(數(shù)據(jù)段)域而非普通的函數(shù)分配的棧空間上。

其次,static會(huì)將其修修飾的變量對(duì)象的可見(jiàn)性限制在本編譯單元內(nèi)(也就是后所以的具有文件作用域),使它成為一個(gè)內(nèi)部連接。這與普通全局變量加入”extern”可以在多個(gè)文件中使用是相對(duì)應(yīng)的。

   二:靜態(tài)(static)的分類(lèi)

        目前在C++語(yǔ)言有五種靜態(tài)對(duì)象的類(lèi)別,分別為靜態(tài)局部變量(對(duì)象),靜態(tài)全局變量(對(duì)象),靜態(tài)函數(shù)(靜態(tài)全局函數(shù)),靜態(tài)成員變量(對(duì)象),靜態(tài)成員函數(shù)。

    靜態(tài)局部變量,靜態(tài)全局變量,以及靜態(tài)函數(shù)的存在是對(duì)C語(yǔ)言兼容的結(jié)果,靜態(tài)員成員變量是在C++引入類(lèi)之后相對(duì)應(yīng)存在的概念,靜態(tài)成員函數(shù)則是為保持類(lèi)的封裝的前提下對(duì)靜態(tài)成員變量進(jìn)行更好方法而引入的一相概念,所以說(shuō)靜態(tài)成員函數(shù)就目前來(lái)講是所以靜態(tài)對(duì)象(包括C++所有的靜態(tài)變量和靜態(tài)成員函數(shù))中最晚一個(gè)引入C++語(yǔ)言的。

1.     靜態(tài)局部變量(對(duì)象)

靜態(tài)局部變量(對(duì)象)通也是指在函數(shù)中定義的靜態(tài)變量(對(duì)象),當(dāng)函數(shù)第一次被調(diào)用時(shí),程序會(huì)為它在程序的數(shù)據(jù)段分配存儲(chǔ)空間,并對(duì)它進(jìn)行初始,當(dāng)函數(shù)調(diào)用完成退出時(shí), 這個(gè)變量(對(duì)象)會(huì)保存此次函數(shù)調(diào)用后的狀態(tài), 但不會(huì)被其它函數(shù)使用, 當(dāng)再次調(diào)用該函數(shù)時(shí), 并不為它分配空間和初始化,而是直接命使用上次調(diào)用的結(jié)果??纯聪旅婧?jiǎn)單的程序:

////////////////////////////////////////////////////////////////////////////////////////

#include <iostream>

#include <cstdlib>

using namespace std;

void foo(bool i)

{

  static int a=0;

  int c=0;

  if(i){

        static int b=0;

        ++b;

        cout <<"b="<< b <<endl;

       }

  ++a;

  ++c;

  cout << "a="<< a <<endl;

  cout << "c="<< c <<endl;

}

 

int main()

{

      foo(false);   //變量,a,c初始化化并加1,所以a=1,c=1,此是b并沒(méi)有初始化

                 //和分配空間,函數(shù)調(diào)用完全c的空間被回收,a由于是靜態(tài)變量,

                 //所以并沒(méi)有回收.

      cout << "-----------------" <<endl;

      foo(true);  //變量a在上次調(diào)用的狀態(tài)上加1,所以a=2,c重新初始分配空間并加1,

                //所以c=1,變量b初始化并分配空間后加1,所以b=1.

      cout << "-----------------" <<endl;

      foo(false);//變量a在上次調(diào)用的狀態(tài)上加1,所以a=3,c重新初始分配空間并加1,

                 //所以c=1,變量b保自己的狀態(tài),所以b=1.

      cout << "-----------------" <<endl;

      foo(true);//變量a在上次調(diào)用的狀態(tài)上加1,所以a=4,c重新初始分配空間并加1

                //所以c=1,變量b在上次調(diào)用的狀態(tài)上加1,所以b=2.

      system("PAUSE");

      return 0;

}

//////////////////////////////////////////////////////////////////

從程序的運(yùn)行結(jié)可以看出局部靜態(tài)變量只在第一次遇到是進(jìn)空間的分配和構(gòu)造,函數(shù)調(diào)用完成并不立即回收,而等程序運(yùn)行的結(jié)束.正因?yàn)樗淮嬖谝还蚕砜臻g地址(對(duì)象多線程來(lái)講),所以在多線程序程序中為保正確的讀取而需要對(duì)其進(jìn)行鎖定。

2.     靜態(tài)全局變量(對(duì)象)

靜態(tài)全局變量(對(duì)象)是指全局變量的基礎(chǔ)上加上static修飾符,它同時(shí)具有文件作用域和靜態(tài)生存期兩種特性。具體來(lái)講就是指只在定義它的源文件中可見(jiàn)而在其它源文件中不可見(jiàn)的變量(文件作用域)。它與全程變量的區(qū)別是: 全程變量可以再說(shuō)明為外部變量(extern), 也就是指跨文件作用域,被其它源文件使用, 而靜態(tài)全程變量卻不能再被說(shuō)明為外部的, 即只能被所在的源文件使用。

3.     靜態(tài)函數(shù)(靜態(tài)全局函數(shù))

靜態(tài)函數(shù)一般來(lái)說(shuō)相對(duì)較少用到普通函數(shù)若未加static修飾,具有跨文件作用域,若加static修飾,與靜態(tài)全局變量相類(lèi)似也具有文件作用域,一般函數(shù)本身的一個(gè)目標(biāo)就是實(shí)現(xiàn)共用(不管是函數(shù)定義文件還是被作為include對(duì)象的文件),若在函數(shù)前加上static主使得函數(shù)只能在本文件中使用,其它文件不能使用,我們當(dāng)然不想這樣做啦J,所以,在一般的代碼中,很少函數(shù)靜態(tài)函數(shù)(靜態(tài)全局函數(shù))不存在。

4.     靜態(tài)成員變量(對(duì)象)

當(dāng)在程序中這義靜態(tài)變量(對(duì)象)時(shí),那么對(duì)于這個(gè)類(lèi)的所以對(duì)象都將只分配一個(gè)共享的存儲(chǔ)單,簡(jiǎn)單的說(shuō),靜態(tài)成員變量屬于類(lèi)范圍,而不是具體的某個(gè)對(duì)象,相當(dāng)于類(lèi)范圍內(nèi)的全局變量(對(duì)象),當(dāng)然也可以說(shuō)是屬于自身類(lèi)型的所有對(duì)象,它的值是可以更新的。只要對(duì)靜態(tài)成員變的值更新一次,所有對(duì)象存取者將是更新后的相同的值(多線程應(yīng)該自行控制),這樣可以提高時(shí)間效率。

靜態(tài)成員變量(對(duì)象)以為類(lèi)為名稱(chēng)空間,為了更好的實(shí)現(xiàn)信息隱藏,可以將它設(shè)置為private,然后通過(guò)函數(shù)進(jìn)行存?。ê竺鎽?yīng)用中將會(huì)詳細(xì)講到),程序?qū)︻?lèi)靜態(tài)數(shù)據(jù)成員的訪問(wèn)會(huì)被轉(zhuǎn)換為類(lèi)內(nèi)部的惟一extern實(shí)體的直接操作(至于如何被轉(zhuǎn)換,不同的編譯器將會(huì)有不同的算法,要詳細(xì)了解請(qǐng)參閱《Inside C++ Object Model》),正因?yàn)檫@樣,所以在類(lèi)的內(nèi)部可以直接定義自身類(lèi)型的static成員,而不會(huì)造成類(lèi)定義的無(wú)限遞歸,而非靜態(tài)的自身類(lèi)型則不行,只能是自身類(lèi)型的指針或引用,其實(shí)這跟類(lèi)定義結(jié)束是到大括號(hào)后的分號(hào)為止是有關(guān)的,在此之前將無(wú)法確定類(lèi)的大小,而自身類(lèi)型的指針或引用的大小則是確定(一個(gè)指針的空間)。如下面代碼:

class A{

 //……

 private:

 //……

static A  a1;//ok,因?yàn)閍1為靜態(tài)成員對(duì)象。

A  a2;//error此時(shí)不能確定A類(lèi)型的大小。

A* a3;//ok 此時(shí)能確定A*類(lèi)型的大小,一個(gè)指抽A類(lèi)型的指針的大小

              A& a4;//ok 此時(shí)能確定A&類(lèi)型的大小,一個(gè)指抽A類(lèi)型的指針的大小  

};

與全局變量一樣,靜態(tài)成員變量也只能提供一次這義,類(lèi)聲明只聲明一個(gè)類(lèi)的“尺寸和規(guī)格”,并不進(jìn)行實(shí)際的內(nèi)存分配,所以它的實(shí)初始化將不能被放在頭文件中,而應(yīng)該放入相就是類(lèi)成員函數(shù)的實(shí)現(xiàn)文件中,也不能在頭文件中類(lèi)聲明的外部定義,因?yàn)槟菚?huì)造成在多個(gè)使用該類(lèi)的源文件中,對(duì)其重復(fù)定義。對(duì)于const類(lèi)型的靜態(tài)有序類(lèi)型可以直接初始化,但其定義還要在類(lèi)定義之外:

//頭文件

 class print{

    private:

        static const int count = 10;//直接初始化

string info[count];

};

const int print::count;//可以在頭文件,也可以在實(shí)現(xiàn)文件,因?yàn)椴粫?huì)為常分配空間

5.     靜態(tài)成員函數(shù)

靜態(tài)成員函數(shù)的引入實(shí)際是為了更好存取靜態(tài)成員變量(對(duì)象),靜態(tài)成員變量(對(duì)象)并不局限于某個(gè)具體的對(duì)象,而普通成員函數(shù)則不為具體的某個(gè)對(duì)象服務(wù)的,那么當(dāng)用普通成員函數(shù)進(jìn)行靜態(tài)成員變量(對(duì)象)存取就會(huì)造成將靜態(tài)成員變量約束為具體的某個(gè)對(duì)象(原因是因?yàn)槠胀ǔ蓡T函數(shù)約束于具體的某個(gè)對(duì)象),使用靜態(tài)成員函數(shù)將會(huì)很好的解決這些問(wèn)題。所以靜態(tài)成員函數(shù)具有靜態(tài)成員變量(對(duì)象)相類(lèi)似的特點(diǎn),不管何種形式(一般包括具體對(duì)象,具體對(duì)象的指針或引用,::運(yùn)算符,靜態(tài)成員函數(shù)指針)的靜態(tài)員函數(shù)的調(diào)用將會(huì)被轉(zhuǎn)換成非成員函數(shù)(普通函數(shù))的調(diào)用。

靜態(tài)成員函數(shù)最大的特點(diǎn)就是沒(méi)有this指針,從而導(dǎo)至下面一些特點(diǎn):

1.不能直接存取類(lèi)中的非態(tài)成員,只能直接存取靜態(tài)成員變量(對(duì)象)。

從語(yǔ)言層次來(lái)說(shuō)普通成員函數(shù)能夠存取非靜態(tài)成員靠是this指針,靜態(tài)成員函數(shù)沒(méi)有this指針,所以無(wú)法實(shí)現(xiàn)。

2.不能為const,volatile或virtual。

靜態(tài)成員函數(shù)本向就不能存取非靜態(tài)成員,所以const對(duì)它來(lái)說(shuō)不有意義。virtual說(shuō)明在一個(gè)類(lèi)繼承體系中不同類(lèi)可能不多個(gè)不同的實(shí)現(xiàn)實(shí)體,而靜態(tài)成員函數(shù)則只有一個(gè),所以static對(duì)virtual并不適合(個(gè)人理解,僅供參考,也有可能是錯(cuò)誤碼的噢J)

3.不需要約束于類(lèi)對(duì)象才能被調(diào)用。

靜態(tài)成員函數(shù)本身就是為了解決此問(wèn)題而被提出的J.

4.可以作為回調(diào)函數(shù)(CallBack)。

靜態(tài)成員函數(shù)擺脫的this指針的約束而成為普通的函數(shù)。


 

    三:靜態(tài)(static)幾個(gè)典型的應(yīng)用:

1.     代替menu的作用(menu hank)

大家都知道如果程序要在,要在類(lèi)定義的內(nèi)部直接初始化變量并使用對(duì)于以夜的編譯器只能使用menu來(lái)達(dá)到這種效果,代碼像這樣:

                class print

{

            menu{count = 10 };//借助枚舉來(lái)得到一個(gè)初始值

            string info[count];

}; 

        用MFC編寫(xiě)過(guò)程序代碼的都應(yīng)該知道這個(gè)功能,它就是通過(guò)menu來(lái)接初始化類(lèi)中的IDD然后進(jìn)行使用,看一面一段MFC產(chǎn)生的代碼

///////////////////////////////////////////////////////////////////////

class CACETESTDlg : public CDialog

{

public:

    //……其它成員函數(shù)和構(gòu)造函數(shù)的定義

// 對(duì)話框數(shù)據(jù)

    enum { IDD = IDD_ACETEST_DIALOG }; //使用menu直接初始化IDD,IDD_ACETEST_DIALOG是對(duì)話框的ID值

  //……其他成員函數(shù)的定義。

};

 

//實(shí)現(xiàn)文件

//……

CACETESTDlg::CACETESTDlg(CWnd* pParent /*=NULL*/)

    : CDialog(CACETESTDlg::IDD, pParent)//注:這里直接使用IDD初始化基類(lèi)。

{

    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

//……

////////////////////////////////////////////////////////////////////////////

上面這種直接初始并使用的功能是借助menu來(lái)實(shí)現(xiàn)的。但這有個(gè)不好之處就是使menu在這里喪失了本來(lái)的作用(menu本身的功能沒(méi)有得到體現(xiàn))但有了static之后可以在一個(gè)類(lèi)中使用static常量來(lái)達(dá)到同樣的效果,因?yàn)橐粋€(gè)類(lèi)的靜態(tài)常量被當(dāng)作一個(gè)編譯時(shí)的常量,而又因?yàn)殪o態(tài)具有文件作用域的內(nèi)部連接,所以不會(huì)產(chǎn)生重復(fù)定義的沖突。其代碼示例在介紹靜態(tài)成員變量(對(duì)象)時(shí)已經(jīng)給出。

     不知道大家有不有注意,menu只能使用整型,但類(lèi)內(nèi)部靜態(tài)常量可以是任何類(lèi)型,甚至抱用戶(hù)自定義類(lèi)型。

2.     單件模式

相大家都知道單件模式吧,如果不熟悉可以參考相產(chǎn)模式的書(shū)籍,單件模式保證一個(gè)類(lèi)僅有一個(gè)實(shí)例存在,具體就是通過(guò)靜態(tài)成員變量和靜態(tài)成員函數(shù)以及類(lèi)的訪問(wèn)層次相結(jié)合而實(shí)現(xiàn)的,具體代碼如下:

//////////////////////////////////////////////////////////////////////////

class Singleton{

public:

       static Singleton* Instance();//注:靜態(tài)成員函數(shù)返回類(lèi)的實(shí)例

       virtual ~Singleton(){};

protected:

       Singleton(){};

private:

       static Singleton* _instance;//注:靜態(tài)成員變量指向類(lèi)的實(shí)例

};

//實(shí)現(xiàn)文件:

Singleton* Singleton::_instance = 0;//靜態(tài)成員變量的初始化

Singleton* Singleton::Instance()    //返回指向類(lèi)實(shí)例的靜態(tài)指針

{

 if(_instance == 0)

            _instance = new Singleton;

  return _instance;

}

/////////////////////////////////////////////////////////////////////

靜態(tài)成員函數(shù)加靜態(tài)成員變量便可實(shí)現(xiàn)單件模式,其中靜態(tài)成員函數(shù)控制返回類(lèi)的實(shí)例,因?yàn)殪o態(tài)成員函數(shù)不能為虛函數(shù),因此子類(lèi)就不能多態(tài)的對(duì)它進(jìn)行重定義,這就保證了只能過(guò)此接口對(duì)類(lèi)進(jìn)行使用。用靜態(tài)成員變量指向那個(gè)唯一被實(shí)例化的對(duì)象,當(dāng)然最實(shí)始被初始化為0,然后使用惰性初始化時(shí)行實(shí)例的建立,

如果將這些換成全局靜態(tài)對(duì)象和全局靜態(tài)函數(shù),相信會(huì)有不少問(wèn)題存在J.

3.     消除全局?jǐn)?shù)據(jù)

大家都知道,大家都知道,引入全局?jǐn)?shù)據(jù)確實(shí)在適當(dāng)?shù)臅r(shí)候能解決一些棘手的問(wèn)題,但全局?jǐn)?shù)據(jù)是跨文件作用域,使得變量的正確初始在有些情況下非常難控制(后面第4點(diǎn)將會(huì)講到),全局變量一旦建立,要消除它是相當(dāng)難,隨著而來(lái)便是”名字空間污染”問(wèn)題,不僅如此,全局變量將變量(對(duì)象)和算法代碼綁定在一起,使得復(fù)用又相當(dāng)困難。

    對(duì)于全局變量所存在的這些問(wèn)題,可以使用封裝加靜態(tài)訪問(wèn)的方法使問(wèn)題得到優(yōu)化

首先將全局變量放入一個(gè)類(lèi)或結(jié)構(gòu)中

然后將它們私有化并添加靜態(tài)成員函數(shù)訪問(wèn)接口

例如有下面的全局變量

    bool g_flag;

    int  g_size;

    const char* in_modulename;

對(duì)于這些全局變量,運(yùn)用上面的方法介紹的方法進(jìn)行改進(jìn),可以產(chǎn)生下面的代碼:

class Global

{

private:

    static bool s_flag_;

    static int  s_size_;

    static const char* s_in_modulename_;

private:

    Global();//私有的構(gòu)造函數(shù),使類(lèi)不能實(shí)例化

    //....其它相關(guān)的函數(shù)

public:

       //存入相關(guān)值

       static void setFlag(bool flag){ s_flag_ = flag; }

       static void setSize(int size) { s_size_ = size; }

       static void setInmodulename(const char* in_modulename){ s_in_modulename_ = in_modulename; }

 

       //取得相關(guān)值

       static int getFlag() { return s_flag_; }

       static int getSize() { return s_size_; }

       static const char* getInmodulename() { return s_in_modulename_; }

};

相信這種重構(gòu)方法通過(guò)引入類(lèi)的封裝和靜態(tài)成員函數(shù)的訪問(wèn)來(lái)解決全局的問(wèn)題應(yīng)該是一個(gè)比較好的方法。

4.     解決初始相互依賴(lài)問(wèn)題

如果你讓對(duì)象A必須在對(duì)象B之前初始化,同時(shí)又讓A的初始化依賴(lài)于B已經(jīng)被初始化,同是A,B又在不同的編譯單元,這是我們就無(wú)法控制正確的初始化順序,解決辦法還是有的(注,以下直入引用《think in C++》的一段例子,由于是總結(jié),拷貝一段沒(méi)問(wèn)題吧J,

這時(shí)我們可用由Jerry Schwarz在創(chuàng)建i o s t r e a m庫(kù)(因?yàn)?/span>c i n , c o u tc e r r的定義是在不同的文件中)時(shí)提供的一種技術(shù)。這一技術(shù)要求在庫(kù)頭文件中加上一個(gè)額外的類(lèi)。這個(gè)類(lèi)負(fù)責(zé)庫(kù)中靜態(tài)對(duì)象的動(dòng)態(tài)初始化。下面是一個(gè)簡(jiǎn)單的例子:

//DEPEND.H – Static initialization technique

#ifndef DEPEND_H_

#define DEPEND_H_

#include <iostream.h>

extern int x;//Delarations,not definitions

extern int y;

 

class initializer{

    static int init_count;

public:

       initializer(){

        cout <<"initializer()"<<endl;

        if(init_count++ == 0)

          {

            cout <<"performing initialization"<<endl;

            x = 100;

            y = 100;

          }

       }

       ~initializer(){

        cout<< "~initializer()"<<endl;

        if(--init_count == 0){

           cout << "performing cleanup" <<endl;

        }

       }

};

//The following creates one object in each

//file where DEPEND.H is included ,but that

//object is only visible within that file:

static initializer init;

#endif //DEPEND_H_

x、y的聲明只是表明這些對(duì)象的存在,并沒(méi)有為它們分配存儲(chǔ)空間。然而initializer init 的定義為每個(gè)包含此頭文件的文件分配那些對(duì)象的空間,因?yàn)槊质?/span>static的(這里控制可見(jiàn)性而不是指定存儲(chǔ)類(lèi)型,因?yàn)槿笔r(shí)是在文件范圍內(nèi))它只在本編譯單元可見(jiàn),所以連接器不會(huì)報(bào)告一個(gè)多重定義錯(cuò)誤。

下面是一個(gè)包含x、yinit_count定義的文件:

 //:DEPDEFS.CPP--Definition

#include “depend.h”

//Static initialization will force

//all these values to zero:

int x;

int y;

int initializer::init_count;

(當(dāng)然,一個(gè)文件的init靜態(tài)實(shí)例也放在這個(gè)文件中)假設(shè)庫(kù)的使用者產(chǎn)生了兩個(gè)其他的文件:

    //:DEPEND.CPP—Static initialization

    #include “depend.h”

   //:DEPEND2.CPP –Static initialization

   #include “depend.h”

 

   int main()

{

    cout << “inside main()” <<endl;

    cout << “leaving main()” <<endl;

    return 0;

}

現(xiàn)在哪個(gè)編譯單元先初始化都沒(méi)有關(guān)系。當(dāng)?shù)谝淮伟?/span>DEPEND.H的編譯單元被初始化時(shí),init_count為零,這時(shí)初始化就已經(jīng)完成了(這是由于內(nèi)部類(lèi)型的全局變量在動(dòng)態(tài)初始化之前都被設(shè)置為零)。對(duì)其余的編譯單元,初始化會(huì)跳過(guò)去。清除按相反的順序,且~initializer()可確保它只發(fā)生一次。這個(gè)例子用內(nèi)部類(lèi)型作為全局靜態(tài)對(duì)象,這種方法也可以用于類(lèi),但其對(duì)象必須用initializer動(dòng)態(tài)初始化。一種方法就是創(chuàng)建一個(gè)沒(méi)有構(gòu)造函數(shù)和析構(gòu)函數(shù)的類(lèi),但用不同的名字的成員函數(shù)來(lái)初始化和清除這個(gè)類(lèi)。當(dāng)然更常用的做法是在initializer()函數(shù)中,設(shè)定指向?qū)ο蟮闹羔?,并在堆中?dòng)態(tài)創(chuàng)建它們。

 

注:由于是總結(jié),以后自己查閱方便,最后一點(diǎn)是直接取自《think in C++》是的一段,我覺(jué)得這個(gè)例子舉的非常好!所以已直接拿過(guò)來(lái)了 :)


本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
C++的static關(guān)鍵字
C++類(lèi)成員函數(shù)
C++類(lèi)對(duì)象共享數(shù)據(jù)的5種實(shí)現(xiàn)方法
c++學(xué)習(xí)筆記(五):c++中的static關(guān)鍵字
靜態(tài)數(shù)據(jù)成員和靜態(tài)函數(shù)成員
關(guān)于類(lèi)的基礎(chǔ)介紹
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服