資源描述:
《學(xué)習(xí)筆記VC++孫鑫(二)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、Lesson2:?掌握C++基本語法C++經(jīng)典語法與應(yīng)用,類的編寫與應(yīng)用,構(gòu)造與析構(gòu)函數(shù),函數(shù)的重載,類的繼承,函數(shù)覆蓋,基類與派生類的構(gòu)造函數(shù)、析構(gòu)函數(shù)先后調(diào)用順序,如何在派生類構(gòu)造函數(shù)中向基類的構(gòu)造函數(shù)傳遞參數(shù),this成員變量,類型轉(zhuǎn)換的內(nèi)幕,虛擬函數(shù)與多態(tài)性,引用和指針變量的區(qū)別與共同處。VC工程的編譯原理與過程,將工程中不同的類拆分到不同的文件中,每一個(gè)類由一個(gè).h和.cpp文件共同完成,頭文件重復(fù)定義問題的解決,培養(yǎng)了學(xué)員良好的編程習(xí)慣,也為以后分析MFCAppWizard生成的工程奠定了良好基礎(chǔ)。1.C++中提供了一套輸入
2、輸出流類的對(duì)象,它們是cin、cout和cerr,對(duì)應(yīng)c語言中的三個(gè)文件指針stdin、stdout、stderr,分別指向終端輸入、終端輸出和標(biāo)準(zhǔn)出錯(cuò)輸出(也從終端輸出)。cin與>>一起完成輸入操作,cout、cerr與<<一起完成輸出與標(biāo)準(zhǔn)錯(cuò)誤輸出。利用cin和cout比C語言中的scanf和printf要方便得多,cin和cout可以自動(dòng)判別輸入輸出數(shù)據(jù)類型而自動(dòng)調(diào)整輸入輸出格式,不必像scanf和printf那樣一個(gè)個(gè)由用戶指定。2.?????structpoint{}與Classpoint{}最主要的區(qū)別是,在未定義情況下?
3、structpoint{}中成員默認(rèn)為public,Classpoint{}中默認(rèn)private。3.?C++主要特點(diǎn):① 封裝性(Encapsulation):把數(shù)據(jù)與操作數(shù)據(jù)的函數(shù)組織在一起,使程序結(jié)構(gòu)更加緊湊,提高類內(nèi)部數(shù)據(jù)的安全性。② 繼承性(Inheritance):增加了軟件的可擴(kuò)充性及代碼重用性;③ 多態(tài)性(Polymorphism):使設(shè)計(jì)人員在設(shè)計(jì)程序時(shí)可以對(duì)問題進(jìn)行更好的抽象,有利于代碼的維護(hù)和可重用4.??C++中幾個(gè)特性的實(shí)現(xiàn)技術(shù)和其它要注意的地方:① 構(gòu)造函數(shù):創(chuàng)建對(duì)象本身,每個(gè)類必須有一個(gè)構(gòu)造函數(shù),否則不能創(chuàng)
4、建對(duì)象。② 析構(gòu)函數(shù):將構(gòu)造函數(shù)調(diào)用的空間釋放。當(dāng)一個(gè)對(duì)象生命周期結(jié)束時(shí),其所占有的內(nèi)存空間就要被回收,這個(gè)工作就由析構(gòu)函數(shù)來完成。析構(gòu)函數(shù)是“反向”的構(gòu)造函數(shù),析構(gòu)函數(shù)不允許有返回值,更重要的是析構(gòu)函數(shù)不允許帶參數(shù),并且一個(gè)類中只能有一個(gè)析構(gòu)函數(shù)。③ 根據(jù)析構(gòu)函數(shù)的這種特點(diǎn),我們可以在構(gòu)造函數(shù)中初始化對(duì)象的某些成員變量,給其分配內(nèi)存空間(堆內(nèi)存),在析構(gòu)函數(shù)中釋放對(duì)象運(yùn)行期間所申請(qǐng)的資源。④ 重載:重載構(gòu)成的條件:函數(shù)的參數(shù)類型、參數(shù)個(gè)數(shù)不同,才能構(gòu)成函數(shù)的重載。發(fā)生在同一個(gè)類里。⑤ 覆蓋:發(fā)生在父類與子類中。::標(biāo)明父類,(多重繼承
5、)。隱藏,繼承,⑥ 多態(tài)(遲綁定):當(dāng)C++編譯器在編譯的時(shí)候,發(fā)現(xiàn)Animal類的breathe()函數(shù)是虛函數(shù),這個(gè)時(shí)候C++就會(huì)采用遲綁定(latebinding)的技術(shù),在運(yùn)行時(shí),依據(jù)對(duì)象的類型(在程序中,我們傳遞的Fish類對(duì)象的地址)來確認(rèn)調(diào)用的哪一個(gè)函數(shù),這種能力就做C++的多態(tài)性。⑦ This指針:1、this指針是一個(gè)隱含的指針,它是指向?qū)ο蟊旧?,代表了?duì)象的地址2、在對(duì)象調(diào)用pt.output(10,10)時(shí),成員函數(shù)除了接受2個(gè)實(shí)參外,還接受到了一個(gè)對(duì)象s的地址。這個(gè)地址被一個(gè)隱含的形參this指針?biāo)@取,它等同于
6、執(zhí)行this=&pt。所有對(duì)數(shù)據(jù)成員的訪問都隱含地被加上前綴this->。例如:x=0;等價(jià)于this->x=0。⑧ 類的繼承特性:① 強(qiáng)制類型轉(zhuǎn)換。如果CFish從CAnimal派生而來。則可以將魚的對(duì)象轉(zhuǎn)換為CAnimal的對(duì)象,而反之則不行。從現(xiàn)實(shí)中理解也是正常的,魚可以是動(dòng)物,而動(dòng)物卻不是魚。轉(zhuǎn)換時(shí)兩個(gè)對(duì)象內(nèi)存模型必須匹配,例如,char(1)可以轉(zhuǎn)換成int(4),int不能轉(zhuǎn)換成char。② #include與#include"xxx。h"的區(qū)別:<>不查找運(yùn)行時(shí)目錄,""查找運(yùn)行時(shí)目錄!(#include7、xx>引入是源文件,要用上usingnamespacexxx;)③ 如何防止類的重復(fù)定義:用#inndefPoint_H_H#definePoint_H_HclassPoint{};#endif來防止5、定義結(jié)構(gòu)體和類時(shí)。例如ClassPoint{intx;inty;};要注意一定加上分號(hào),結(jié)構(gòu)體定義默認(rèn)成員是public,而Class定義默認(rèn)為private。6、類的定義中,如果未指明成員類型,則缺省為private。而結(jié)構(gòu)體中則缺省為public。7、引用:引用經(jīng)常用在函數(shù)的傳參上。另外數(shù)值交換函數(shù)也經(jīng)常用引用。例change(in
8、t&x,int&y){inttemp;temp=x;x=y;y=x}調(diào)用時(shí)即可以用?inta=3;intb=4;change(a,b);一般不用指針來作為參數(shù)進(jìn)行數(shù)值交換。因?yàn)闀?huì)引起歧義。8、通常將類的定義