青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

woaidongmao

文章均收錄自他人博客,但不喜標(biāo)題前加-[轉(zhuǎn)貼],因其丑陋,見諒!~
隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
數(shù)據(jù)加載中……

為什么虛函數(shù)必須是非靜態(tài)成員函數(shù) 構(gòu)造函數(shù)能為static嗎?

靜態(tài)函數(shù)
static聲明的函數(shù)是靜態(tài)函數(shù)。靜態(tài)函數(shù)可以分為全局靜態(tài)函數(shù)類的靜態(tài)成員函數(shù)

Static
關(guān)鍵字
在類中,用static聲明的成員變量為靜態(tài)成員變量,它為該類的公用變量,在第一次使用時被初始化對于該類的所有對象來說,static成員變量只有一份
static聲明的方法是靜態(tài)方法,在調(diào)用該方法時,不會將對象的引用傳遞給它,所以static方法中不可訪問非static的成員。
靜態(tài)方法不再是針對于某個對象調(diào)用,所以不能訪問非靜態(tài)成員。
可以通過對象引用或類名(不需要實例化)訪問靜態(tài)成員

C++
類靜態(tài)數(shù)據(jù)成員與類靜態(tài)成員函數(shù)
函數(shù)調(diào)用的結(jié)果不會訪問或者修改任何對象(非static)數(shù)據(jù)成員,這樣的成員聲明為靜態(tài)成員函數(shù)比較好。且如果static int func(....)不是出現(xiàn)在類中,則它不是一個靜態(tài)成員函數(shù),只是一個普通的全局函數(shù),只不過由于static的限制,它只能在文件所在的編譯單位內(nèi)使用,不能在其它編譯單位內(nèi)使用。
靜態(tài)成員函數(shù)的聲明除了在類體的函數(shù)聲明前加上關(guān)鍵字static,以及不能聲明為const或者volatile之外,與非靜態(tài)成員函數(shù)相同。出現(xiàn)在類體之外的函數(shù)定義不能制定關(guān)鍵字static
靜態(tài)成員函數(shù)沒有this指針

在沒有講述本章內(nèi)容之前如果我們想要在一個范圍內(nèi)共享某一個數(shù)據(jù),那么我們會設(shè)立全局對象,但面向?qū)ο蟮某绦蚴怯蓪ο髽?gòu)成的,我們?nèi)绾尾拍茉陬惙秶鷥?nèi)共享數(shù)據(jù)呢?

這個問題便是本章的重點(diǎn):聲明為static的類成員或者成員函數(shù)便能在類的范圍內(nèi)共同享我們把這樣的成員稱做靜態(tài)成員和靜態(tài)成員函數(shù)。

下面我們用幾個實例來說明這個問題,類的成員需要保護(hù),通常情況下為了不違背類的封裝特性,我們是把類成員設(shè)置為protected(保護(hù)狀態(tài))的,但是我們?yōu)榱撕喕a,使要說明的問題更為直觀,更容易理解,我們在此處都設(shè)置為public

以下程序我們來做一個模擬訪問的例子,在程序中,每建立一個對象我們設(shè)置的類靜態(tài)成員變自動加一,代碼如下:

#include <iostream>
using namespace std;

class Internet
{
public:
     Internet(char *name,char *address)
     {
         strcpy(Internet::name,name);
         strcpy(Internet::address,address);
         count++;
     }


     static void Internet::Sc()//
靜態(tài)成員函數(shù)
     {
         cout<<count<<endl;
     }

     Internet &Rq();


public:
     char name[20];
     char address[20];
     static int count;//
這里如果寫成static int count=0;就是錯誤的
};

Internet& Internet::Rq()//
返回引用的成員函數(shù)
{
     return *this;
}

int Internet::count = 0;//
靜態(tài)成員的初始化

void vist()
{
     Internet a1("
中國軟件開發(fā)實驗室","www.cndev-lab.com");
     Internet a2("
中國軟件開發(fā)實驗室","www.cndev-lab.com");
}


void fn(Internet &s)
{
     cout<<s.Rq().count;
}


void main()
{
     cout<<Internet::count<<endl;//
靜態(tài)成員值的輸出
     vist();
     Internet::Sc();//
靜態(tài)成員函數(shù)的調(diào)用
     Internet b("
中國軟件開發(fā)實驗室","www.cndev-lab.com");
     Internet::Sc();
     fn(b);
     cin.get();
}

上面代碼我們用了幾種常用的方式建立對象,當(dāng)建立新對象并調(diào)用其構(gòu)造函數(shù)的時候,靜態(tài)成員cout便運(yùn)行加1操作,靜態(tài)成員的初始化應(yīng)該在主函數(shù)調(diào)用之前,并且不能在類的聲明中出現(xiàn),通過運(yùn)行過程的觀察我們發(fā)現(xiàn),靜態(tài)成員count的狀態(tài)并不會隨著一個新的對象的新建而重新定義,盡而我們了解到類的靜態(tài)成員是屬于類的而不是屬于哪一個對象的,所以靜態(tài)成員的使用應(yīng)該是類名稱加域區(qū)分符加成員名稱的,在上面的代碼中就是Internet::count,雖然我們?nèi)匀豢梢允褂脤ο竺狱c(diǎn)操作符號加成員名稱的方式使用,但是不推薦的,靜態(tài)類成員的特性就是屬于類而不專屬于某一個對象。

靜態(tài)成員函數(shù)的特性類似于靜態(tài)成員的使用,同樣與對象無關(guān),調(diào)用方法為類名稱加域區(qū)分符加成員函數(shù)名稱,在上面的代碼中就是Internet::Sc();靜態(tài)成員函數(shù)由于與對象無關(guān)系,所以在其中是不能對類的普通成員進(jìn)行直接操作的。

如果上面的 static void Internet::Sc()修改成為:
static void Internet::Sc()//
靜態(tài)成員函數(shù)
{
    cout<<name<<endl;//
錯誤
     cout<<count<<endl;
}


靜態(tài)成員函數(shù)與普通成員函數(shù)的差別就在于缺少this指針,沒有這個this指針自然也就無從知道name是哪一個對象的成員了。

根據(jù)類靜態(tài)成員的特性我們可以簡單歸納出幾點(diǎn),靜態(tài)成員的使用范圍:
1.
用來保存對象的個數(shù)。
2.
作為一個標(biāo)記,標(biāo)記一些動作是否發(fā)生,比如:文件的打開狀態(tài),打印機(jī)的使用狀態(tài),等等。
3.
存儲鏈表的第一個或者最后一個成員的內(nèi)存地址。

為了做一些必要的練習(xí),深入的掌握靜態(tài)對象的存在的意義,我們以前面的結(jié)構(gòu)體的教程為基礎(chǔ),用類的方式描述一個線性鏈表,用于存儲若干學(xué)生的姓名,代碼如下:

#include <iostream>
using namespace std;

class Student
{
public:
     Student (char *name);
     ~Student();

public:
     char name[30];
     Student *next;
     static Student *point;
};

Student::Student(char *name)
{
     strcpy(Student::name,name);
     this->next=point;
     point=this;
}

Student::~Student ()//
析構(gòu)過程就是節(jié)點(diǎn)的脫離過程
{
     cout<<"
析構(gòu):"<<name<<endl;

     if(point==this)
     {
         point=this->next;
         cin.get();
         return;
     }

     for(Student *ps=point;ps;ps=ps->next)
     {
         if(ps->next==this)
         {
         cout<<ps->next<<""<<this->next<<endl;
         ps->next=next;//=next
也可以寫成this->next;
         cin.get();
         return;
         }
     }

     cin.get();
}

Student* Student::point=NULL;
void main()
{
     Student *c = new Student("marry");
     Student a("colin");
     Student b("jamesji");
     delete c;
     Student *fp=Student::point;
     while(fp!=NULL)
     {
         cout<<fp->name<<endl;
         fp=fp->next;
     }

     cin.get();
}


從上面的代碼來看,原來單純結(jié)構(gòu)化編程需要的一個鏈表進(jìn)入全局指針在這里被類的靜態(tài)成員指針?biāo)娲?span lang="EN-US">(
類的靜態(tài)成員完全可以替代全局變量),這個例子的理解重點(diǎn)主要是要注意觀察類成員的析構(gòu)順序,通過對析構(gòu)順序的理解,使用析構(gòu)函數(shù)來進(jìn)行節(jié)點(diǎn)的脫鏈操作。

為什么虛函數(shù)必須是非靜態(tài)成員函數(shù)
如果定義為虛函數(shù),那么它就是動態(tài)綁定的,也就是在派生類中可以被覆蓋的,這與靜態(tài)成員函數(shù)的定義本身就是相矛盾的。

==
主要有兩個作用:
     1
、管理靜態(tài)數(shù)據(jù)成員;
     2
、提供類范圍的功能,即不需要對象來實現(xiàn)的功能。
比如Symbian中的NewL/LC方法就是static

==
使用static關(guān)鍵字聲明的函數(shù)成員是靜態(tài)的,靜態(tài)成員函數(shù)同樣也屬于整個類,由同一個類的所有對象共同維護(hù),為這些對象所共享。

作為成員函數(shù),它的訪問屬性可以受到類的嚴(yán)格控制,對于公有的靜態(tài)函數(shù)成員函數(shù),可以通過類名或?qū)ο竺麃碚{(diào)用,但一般情況下建議用對象名來引用靜態(tài)函數(shù)成員(真的嗎?)。注意,一般的成員函數(shù)只能通過對象名來調(diào)用。
由于一個類的靜態(tài)成員函數(shù)只有一個拷貝,因此它訪問對象的數(shù)據(jù)何函數(shù)使受到了限制。靜態(tài)成員函數(shù)可以直接訪問該類的靜態(tài)數(shù)據(jù)成員。而訪問非靜態(tài)數(shù)據(jù)成員,必須通過參數(shù)傳遞方式得到對象名,然后通過對象名來訪問。可以看到,通過靜態(tài)函數(shù)成員訪問非靜態(tài)成員使相當(dāng)麻煩的,一般的使用中,它主要用來訪問全局變量或同一個類中的靜態(tài)數(shù)據(jù)成員,特別是和后者一起使用,達(dá)到對同一個類中對象之間共享的數(shù)據(jù)進(jìn)行維護(hù)的目的。
構(gòu)造函數(shù)不可以定義為static看了上面,應(yīng)該可以理解原因。

注意,由于static不是函數(shù)類型中的一部分,所以在類定義之外定義靜態(tài)成員函數(shù)時不使用static,在類中定義的靜態(tài)成員函數(shù)是內(nèi)聯(lián)的。

一般來說,通過成員名限定比使用對象名訪問靜態(tài)成員要好。因為靜態(tài)成員不是對象的成員。

靜態(tài)成員可以被繼承,這時,基類對象和派生類的對象共享該靜態(tài)成員,除此之外,在類等級中對靜態(tài)成員的其他特性(例如,靜態(tài)成員在派生類中的訪問權(quán)限,在派生類中重載成員函數(shù)等)的分析與一般成員類似。

靜態(tài)成員函數(shù)不能被申明為虛函數(shù),靜態(tài)成員具有外部連接屬性,static僅有的含義是使該成員為該類的所有對象共享。

類中的任何成員函數(shù)都可以訪問靜態(tài)成員,但靜態(tài)成員函數(shù)只能通過對象名(或指向?qū)ο蟮闹羔槪┰L問該對象的非靜態(tài)成員,因為靜態(tài)成員函數(shù)沒有this 指針。


虛函數(shù)必須是非靜態(tài)成員函數(shù)

構(gòu)造函數(shù)不可以定義為static

posted on 2009-08-19 13:25 肥仔 閱讀(1811) 評論(0)  編輯 收藏 引用 所屬分類: C++ 基礎(chǔ)

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            91久久精品日日躁夜夜躁欧美| 一区二区三区免费在线观看| 99re成人精品视频| 韩国女主播一区| 韩日精品中文字幕| 狠狠色噜噜狠狠色综合久| 狠狠色狠色综合曰曰| 亚洲第一福利在线观看| 亚洲精品乱码久久久久久蜜桃91| 亚洲成色www8888| 久久久精品国产一区二区三区| 欧美一区二区成人6969| 久久国产主播| 免费在线亚洲| 欧美新色视频| 国产一区在线视频| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲精品在线免费| 亚洲女同精品视频| 久久久91精品国产一区二区三区| 欧美jizz19hd性欧美| 日韩亚洲视频| 久久精品男女| 欧美三级视频在线播放| 国内偷自视频区视频综合| 亚洲日韩欧美视频一区| 欧美在线网站| 亚洲精品乱码久久久久久黑人 | 欧美aⅴ一区二区三区视频| 亚洲欧洲日韩在线| 欧美一区精品| 国产精品国产三级国产普通话99 | 国产亚洲欧洲| 亚洲人成毛片在线播放| 亚欧美中日韩视频| 亚洲精品在线免费| 久久偷窥视频| 国产又爽又黄的激情精品视频| 亚洲久久成人| 老司机午夜精品视频在线观看| 中国亚洲黄色| 欧美日韩国产大片| 亚洲日本va午夜在线影院| 久久久久91| 午夜宅男久久久| 国产精品美女一区二区| 99re8这里有精品热视频免费 | 欧美大片一区二区| 午夜欧美大尺度福利影院在线看 | 91久久国产综合久久| 久久久青草青青国产亚洲免观| 9色porny自拍视频一区二区| 美女尤物久久精品| 在线播放中文一区| 久久久人成影片一区二区三区| 亚洲午夜精品视频| 国产精品大片| 亚洲自拍都市欧美小说| 亚洲理论在线观看| 欧美日韩爆操| 在线亚洲欧美视频| 亚洲激情综合| 欧美激情按摩在线| 日韩一级大片在线| 亚洲精品自在在线观看| 欧美日韩亚洲一区二区三区| 一区二区三区四区蜜桃| 99精品欧美一区二区蜜桃免费| 欧美日本精品| 亚洲欧美国产精品va在线观看 | 99成人精品| 99在线热播精品免费| 国产精品黄视频| 欧美一区二区女人| 久久精品国产亚洲a| 91久久久久久久久| 日韩一级黄色大片| 国产精品中文字幕欧美| 久久青草久久| 欧美激情一区在线观看| 亚洲欧美国产一区二区三区| 亚洲欧美日韩视频一区| 在线免费观看视频一区| 亚洲每日在线| 国产在线乱码一区二区三区| 久久久久9999亚洲精品| 免费成人性网站| 午夜精品福利一区二区蜜股av| 欧美在线视频一区二区三区| 亚洲福利视频二区| 一区二区三区高清在线| 国内精品美女在线观看| 亚洲肉体裸体xxxx137| 国产视频在线观看一区二区三区 | 久久精品国产在热久久 | 欧美久久成人| 久久精品免费观看| 欧美精品日韩综合在线| 久久国产精品99国产精| 欧美激情一区二区久久久| 欧美一级专区| 欧美紧缚bdsm在线视频| 久久国产精品第一页| 欧美日本网站| 欧美mv日韩mv国产网站| 国产噜噜噜噜噜久久久久久久久| 欧美激情导航| 国产一区二区三区丝袜| 99精品99久久久久久宅男| 亚洲高清中文字幕| 亚洲欧美日本在线| 亚洲天堂激情| 欧美多人爱爱视频网站| 乱中年女人伦av一区二区| 国产精品久久精品日日| 亚洲精品欧洲精品| 91久久极品少妇xxxxⅹ软件| 欧美激情精品久久久久久变态| 亚洲天堂av高清| 亚洲精品国产精品乱码不99| 久久精品导航| 欧美一区国产二区| 国产精品红桃| 亚洲一区二区三区高清不卡| 国产精品99久久久久久www| 欧美激情综合色| 欧美激情一区在线| 在线观看国产日韩| 久久精品亚洲一区二区| 欧美一区二区三区四区高清| 国产精品青草综合久久久久99| 日韩午夜激情av| 在线视频你懂得一区| 欧美精品黄色| 亚洲最新在线| 亚洲欧美激情视频在线观看一区二区三区| 欧美—级在线免费片| 亚洲欧洲日产国产网站| 亚洲无毛电影| 国产精品视频不卡| 香蕉久久国产| 久久综合电影一区| 亚洲第一久久影院| 欧美黄在线观看| 一区二区毛片| 午夜日本精品| 国产一区二区三区在线播放免费观看| 欧美亚洲尤物久久| 牛牛国产精品| 日韩小视频在线观看| 欧美性事免费在线观看| 亚洲一区二区三区精品动漫| 久久久久久久综合色一本| 韩日午夜在线资源一区二区| 美女脱光内衣内裤视频久久网站| 亚洲国产精品嫩草影院| 在线亚洲精品福利网址导航| 国产精品一二三| 久久久www| 亚洲精品久久视频| 久久高清国产| 99精品国产在热久久下载| 国产精品看片资源| 久久日韩精品| 宅男精品视频| 欧美 日韩 国产在线| 亚洲一区中文字幕在线观看| 国产一区二区三区四区三区四| 欧美**人妖| 午夜精彩国产免费不卡不顿大片| 欧美成人69av| 亚洲欧美日韩精品综合在线观看| 伊人久久av导航| 国产精品激情| 欧美成人午夜激情视频| 亚洲欧美日韩国产成人| 亚洲国产精品第一区二区三区| 午夜在线播放视频欧美| 91久久国产综合久久| 国产精品尤物福利片在线观看| 欧美成人亚洲| 久久国产精品久久久久久久久久 | 免费不卡在线观看av| 99视频热这里只有精品免费| 欧美成人免费播放| 91久久久久久| 久久精品视频在线看| 亚洲精选成人| 在线观看日产精品| 国产乱子伦一区二区三区国色天香| 麻豆国产精品一区二区三区 | 在线一区欧美| 18成人免费观看视频| 国产精品日韩久久久| 欧美日韩国产精品自在自线| 久久精品日韩欧美| 午夜宅男久久久| 亚洲综合日韩在线| 亚洲视频免费在线观看| 亚洲剧情一区二区|