小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Visual C .NET編程講座之二(2)

 dazuo0312 2006-09-09
Visual C++.NET編程講座之二(2)
運(yùn)行機(jī)制及MFC類結(jié)構(gòu)

  1.代碼分析

  在圖2中,包含文件afxwin.h是使用MFC類庫的頭文件。class是定義類的關(guān)鍵字,class的后面是用戶定義的類名,即CSimpApp。需要說明和是:通常用大寫的C字母開始的標(biāo)識(shí)符作為類名,C用來表示類(Class),以與函數(shù)及其他數(shù)據(jù)類型相區(qū)別。

  類體中定義的函數(shù)或變量,都稱為該類的"成員",其中變量稱為"成員變量",函數(shù)稱為"成員函數(shù)"。成員可被聲明成public、private。對(duì)于public類成員來說,它們是公有的,能被類外面的程序訪問;對(duì)于private類成員來說,它們是私有的,只能由類中的函數(shù)所使用,而不能被外面的程序所訪問。

  在"public:"或"private:"后面定義的所有成員都是公有或私有的,直到下一個(gè)"public:"或"private:"出現(xiàn)為止。若成員前面沒有類似"public:"或"private:"的聲明,則所定義的成員是private(私有),這是類的默認(rèn)處理。關(guān)鍵字public和private可以在類中出現(xiàn)多次,且前后的順序沒有關(guān)系。

  類名冒號(hào)后面的是用來定義類的繼承,其格式如下:

class 派生類名 : 繼承方式 基類名
{
派生類的成員
};

  其中,被繼承的類稱為基類(base class),在基類上建立的新類稱為派生類(derived class)。繼承方式有三種:public(公有)、private(私有)及protected(保護(hù)),若繼承方式?jīng)]有指定,則被指定為缺省的public方式。繼承方式?jīng)Q定了派生類的繼承基類屬性的使用權(quán)限,public繼承方式能夠使用基類的所有共有成員。

  從代碼中可以看出,類CSimpApp是從應(yīng)用程序類CWinApp派生而來。而類CMainFrame是從框架窗口類CFrameWnd派生而來。

  在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,類有函數(shù)重載、運(yùn)算符重載和虛函數(shù)等,這些稱為類的多樣性。

  所謂"函數(shù)重載",是指在類中或同一個(gè)作用域中,允許有多個(gè)同名的函數(shù)存在,但同名的各個(gè)函數(shù)的形參必須有區(qū)別:形參的個(gè)數(shù)不同,或者形參的個(gè)數(shù)相同,但參數(shù)類型有所不同。

  所謂"運(yùn)算符重載",就是賦予已有的運(yùn)算符多重含義。

  所謂"虛函數(shù)",它是指在函數(shù)名前面加上virtual關(guān)鍵字的成員函數(shù),如成員函數(shù)InitInstance就是被聲明成了虛函數(shù)。虛函數(shù)也是能使一個(gè)函數(shù)具有多種不同的版本,只不過虛函數(shù)的不同版本是在基類和派生類中進(jìn)行定義的。這樣系統(tǒng)就會(huì)根據(jù)相應(yīng)的類對(duì)象來決定調(diào)用的是派生類CSimpApp的InitInstance()函數(shù)中的代碼,還是基類InitInstance()函數(shù)中的代碼。

  在CMainFrame類中,我們還看到了與該類名相同的成員函數(shù)CMainFrame(),這個(gè)函數(shù)稱為該類的"構(gòu)造函數(shù)"。每個(gè)類都有一個(gè)構(gòu)造函數(shù),如果我們沒有指定,系統(tǒng)就會(huì)自動(dòng)使用默認(rèn)的構(gòu)造函數(shù)。構(gòu)造函數(shù)的最大特點(diǎn)是在對(duì)象建立時(shí)它會(huì)被自動(dòng)執(zhí)行,因此用于變量、對(duì)象的初始化代碼一般放在構(gòu)造函數(shù)中。在定義構(gòu)造函數(shù)時(shí),不能指定函數(shù)返回值的類型,也不能指定為void類型。

  在CMainFrame()構(gòu)造函數(shù)中的Create函數(shù)是用來創(chuàng)建窗口,它的參數(shù)依次用來指定類名、窗口標(biāo)題、窗口樣式和窗口大小。其中,預(yù)定義樣式WS_OVERLAPPEDWINDOW用來創(chuàng)建一個(gè)常規(guī)窗口,CRect是一個(gè)矩形的數(shù)據(jù)類,用來確定窗口的大小和位置。

  與構(gòu)造函數(shù)相對(duì)應(yīng)的是析構(gòu)函數(shù)。析構(gòu)函數(shù)是另一種特殊的C++成員函數(shù),它只是在類名稱前面加上一個(gè)"~"符號(hào)。每一個(gè)類只有一個(gè)析構(gòu)函數(shù),沒有任何參數(shù),也不返回任何值。

  在類定義時(shí),成員函數(shù)既可以在類中定義,也可以在類外定義。但在類外定義時(shí),必須用作用域運(yùn)算符"::"來通知編譯系統(tǒng)該函數(shù)所屬的類。例如,InitInstance函數(shù)就是在類CSimpApp外面定義的。

  代碼中,m_pMainWnd是MFC中的一個(gè)全局指針變量。MessageBox()是窗口基類CWnd的一個(gè)成員函數(shù),用來彈出一個(gè)對(duì)話框窗口,顯示參數(shù)指定的短信息,這里是"你好,歡迎進(jìn)入MFC世界!"。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(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)論公約

    類似文章 更多