資源描述:
《VC++ 課件 第02章 C++面向?qū)ο蟆酚蓵T上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、第2章C++面向?qū)ο蟪绦蛟O(shè)計2.1類和對象2.1.1類的定義定義類的一般格式如下:class<類名>{private:[<私有數(shù)據(jù)和函數(shù)>]protected:[<保護(hù)數(shù)據(jù)和函數(shù)>]public:[<公有數(shù)據(jù)和函數(shù)>]};<各個成員函數(shù)的實現(xiàn)>類中的數(shù)據(jù)和函數(shù)是類的成員,分別稱為數(shù)據(jù)成員和成員函數(shù)。public類成員,是公有的,能被外面的程序訪問;private類成員,是私有的,只能由類中的函數(shù)所使用,而不能被外面的程序所訪問。protected類成員,是私有的,只能由類中的函數(shù)及其派生類所使用,而不能被外面的程序所訪問。<各個成
2、員函數(shù)的實現(xiàn)>是類定義中的實現(xiàn)部分,這部分包含所有在類體中聲明的函數(shù)的定義。當(dāng)類的成員函數(shù)的函數(shù)體在類的外部定義時,必須由作用域運算符“::”來通知編譯系統(tǒng)該函數(shù)所屬的類。2.1類和對象定義類時應(yīng)注意:(1)不允許對所定義的數(shù)據(jù)成員進(jìn)行初始化,例如類CMeter中,下面的定義是錯誤的:classCMeter{...private:intm_nPos=10;...};(2)在“public:”或“private:”后面定義的所有成員都是公有或私有的,直到下一個“public:”或“private:”出現(xiàn)為止。(3)關(guān)鍵字public
3、和private可以在類中出現(xiàn)多次,且前后的順序沒有關(guān)系;(4)關(guān)鍵字protected(保護(hù))也可修飾成員的類型,它與private兩者基本相似,但在類的繼承時有所不同。(5)數(shù)據(jù)成員的類型可以是整型、浮點型、字符型、數(shù)組、指針和引用等,也可以是另一個類的對象。2.1類和對象2.1.2對象的定義定義對象,格式:<類名><對象名表>定義的對象既可是一個普通對象,也可是一個數(shù)組對象或指針對象。對象的成員就是該對象的類所定義的成員。對象成員有數(shù)據(jù)成員和成員函數(shù),其表示方式如下:<對象名>.<成員名><對象名>.<成員名>(<參數(shù)表>)
4、前者用來表示數(shù)據(jù)成員,后者用來表示成員函數(shù)?!?”是一個運算符,用來表示對象的成員。指向?qū)ο蟮闹羔樀某蓡T表示如下:<對象指針名>-><成員名><對象指針名>-><成員名>(<參數(shù)表>)“->”與“.”運算符的區(qū)別是:“->”用來表示指向?qū)ο蟮闹羔槼蓡T,“.”用來表示一般對象成員。前者表示數(shù)據(jù)成員,后者表示成員函數(shù)。下面的兩種表示是等價的:<對象指針名>-><成員名>(*<對象指針名>).<成員名>這對于成員函數(shù)也適用。另外,引用對象的成員表示與一般對象的成員表示相同。2.1類和對象2.1.2幾個C++程序在屏幕上輸出一個由星號形成
5、的三角形。//輸出星號的三角形陣列#includevoidDoDraw(intnum);//聲明一個全局函數(shù)voidmain(){intnum=5;//定義并初始化變量DoDraw(num);//函數(shù)的調(diào)用}voidDoDraw(intnum)//函數(shù)的定義{for(inti=0;i
6、classCDrawArray//定義一個類{public:voidDoDraw(intnum);//聲明類的公有成員函數(shù)};voidCDrawArray::DoDraw(intnum)//成員函數(shù)的實現(xiàn){for(inti=0;i7、構(gòu)造函數(shù)為了能給數(shù)據(jù)成員自動設(shè)置某些初始值,就要使用類的特殊成員函數(shù)——構(gòu)造函數(shù)。構(gòu)造函數(shù)的最大特點是在對象建立時它會被自動執(zhí)行,用于變量、對象的初始化代碼一般放在構(gòu)造函數(shù)中。構(gòu)造函數(shù)必須與相應(yīng)的類同名,可以帶參數(shù),也可以不帶參數(shù),可以重載。例如:classCMeter{public:CMeter(intnPos=10)//構(gòu)造函數(shù){m_nPos=nPos;}...}構(gòu)造函數(shù)CMeter(intnPos=10)中,nPos被設(shè)置了10,構(gòu)造函數(shù)中相應(yīng)實參沒有被指定時,使用此缺省值。由于構(gòu)造函數(shù)的參數(shù)只能在定義對象時指定。CMete
8、roMeter;和CMeteroMeter(10);2.1類和對象析構(gòu)函數(shù)與構(gòu)造函數(shù)相對應(yīng)的是析構(gòu)函數(shù)。析構(gòu)函數(shù)是另一種特殊的C++成員函數(shù),它只是在類名稱前面加上一個“~”符號。每一個類只有一個析構(gòu)函數(shù),沒有任何參數(shù),也不返回任何值。例如:cla