第2章類和對象_第1頁
第2章類和對象_第2頁
第2章類和對象_第3頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、咼質量C+編程1第2章類和對象 本章包含如下內容:2.1類的基礎知識2.2構造函數2.3拷貝 構造函數2.4析構函數2.5 C+能自動產生成員函數2.6友元2.7類成員的補充2.8 簡單內存對象模型2時間:9學時教學方法:PPT講解抽象和封裝-面向對象基本概念?面向對象基本概念-類和對象?在現(xiàn)實 世界中,任何事物都是對象,對象可以是有形的物,如一個蘋果,一個人等,也可以是無形的物如一個 實數,一篇文章。類是一組具有相同屬性和行為的對象的抽象。類和對象的關系是抽象和具體的關系。-封裝、繼承和多態(tài)? 1.用類進行封裝? 2.繼承:保持已有類的特性而構造新類的過程。? 3.多態(tài):使編譯器能夠在運行時

2、決定是使用基類中定義 的函數還是派生類中定義的函數。3抽象和封裝-問題提出?設計一個時鐘程序(C語言解法(clock.c) typedef struct tagClock int mai n( int Hour; Clock c1; int Mi nute; struct tagClock *clk, Clock c2; Clock; void SetTime( Clock* clk, int SetHour, int SetMinute ShowTime(&c1;printf("SetTime is called'n" SetTime(&c1, 1

3、0, 23; clk->Hour = SetHour;ShowTime( &c1 ; clk->Mi nute = SetMi nute; ShowTime(&c2; void ShowTime( Clock* clk SetTime(&c2, 11,50; printf("ShowTime is called'n" ShowTime( &c2 ;prin tf("The Curre nt time is %d : %dn", clk->Hour, clk->Mi nute; return

4、0; 4抽象和封裝-抽象數據類型ADT ?在C+中,用類來定義自己的抽象數 據類型(abstract data type)。通過定義類型來對應所要解決的問題中的各種概 念,可以 使我們更容易編寫、調試和修改程序。class Clock public: voidSetTime(int SetHour,類類型 int SetMinute;注意:數據和 void ShowTime(;基本類型 函數部分 string point private: int float 開發(fā)人員 vector int m_Hour如何實現(xiàn)? int m_Mi nute ; 5 ?抽象和封裝-類人們用對象的觀點將同一類型的

5、實體加以抽象:描述該實體的共有的屬性(對 象相互區(qū)別的物理量)以及行為特征。這種抽象的實現(xiàn)造就了類,從而實現(xiàn)了真正 意義上的面向對象程序設計。類是有著共同特征與行為、而狀態(tài)各不相同的物體的總稱對象是類的實現(xiàn),是類的實例。?用 C+術語來表達:類是一種類型?類是表現(xiàn)數據高級形態(tài)的有力工具。類的產生基礎是封裝成員函數-成員函數的書寫規(guī)則?可以僅在類中說明原型,而在類外給出函 數體實現(xiàn),也可以直接在類中給出函數體,形成成員函數的隱含內聯(lián)。允許成員函 數為重載函數和帶默認參數值的函數。?對成員數據的使用不再遵循 先聲明后使 用”的原則,即可?以放置在類中任意位置。?凡被調用的成員函數一定要有函數實現(xiàn)。

6、12子內定義(隱式inline成員函數-定義方式?類成員函數定義的兩種方式? 子外定義(可以顯式inline使用類-動手實現(xiàn)第一個類?創(chuàng)建我們自己的第一個類新建工程,在工程中建立:plock.cpp/包括類定義,類實現(xiàn)及類使用?20類的深入知識-1/2?再看類:-把數據封裝(使用private,維護方便。-使程序更加模塊化,邏輯更清晰。?討論1: 封裝的深層理解子用戶的代碼中永遠不會出現(xiàn) private圭寸裝起來的內容。?討論2: class, struct的區(qū)別21類的深入知識-2/2類的作用域2.類內訪問和類外訪問1.3隱含的this指針222.141類作用域-1/2?每個類都定義了自己的

7、新作用域和唯一的類型。在類的定義體內聲明類成 員,將成員名引入類的作用域。兩個不同的類具有兩個不同的類作用域。類作用域并不像函數作用域或塊作用域等那樣容易觀察它的范圍,一般的說我 們可以把類的作用域看做由三部分組成:-類定義部分-類外成員函數形參表部分-類外成員函數函數體部分隱含的 this 指針-1/3 class Clock public: void SetTime(int SetHour, intSetMinute; void ShowTime(; private: int m_Hour; int m_Minute ; ; void Clock:SetTime( int SetHour,

8、 int SetMinute this->m_Hour = SetHour; this->m_Minute=SetMi nute; 262.143 隱含的 this 指針-2/3 void Clock:SetTime(int newHour, int newMinute this->m_Hour = newHour; 每一個成員函數(static this->m_Minute = newMinute; member function 除外都有 一個隱含的參數,為 Clock c1; classType* this c1.SetTime(0,0; c1 m_Hour m_

9、Minute SetTime( Clock* this, int SetHour, int SetMinute this - >m_Hour = SetHour; this - >m_Minute = SetMinute; 27隱含的 this 指針-3/3 ?再看代碼 Clock c1; c1.SetTime(12,0; c1.ShowTime(; / 顯示 12:00 28第2章類和對象 本章包含如下內容:2.1類的基礎知識2.2構造函數2.3拷貝 構造函數2.4析構函數2.5 C+能自動產生成員函數2.6友元2.7類成員的補充2.8 簡單內存對象模型29時間:9學時教學方法:

10、PPT講解2.2構造函數-必要性? ?我們知道:類就是定義了一個新的類型和一個新作用 域。一個類設計得越好它就越像一個基本類型。class Clock int main( public:Clock c1; void SetTime( int SetHour, int SetMinute; Clock c2; void ShowTime(; c1.ShowTime(;輸出:private: c1.SetTime( 3, 3; is called ShowTime int m_Hour; c1.ShowTime(; int m_Mi nute; -858993460:-858993460 ; Se

11、tTime is called return 0; ShowTime is called 3:3 302.2構造函數-調用時機?當然是在任何構造對象的時候: a無論這個對象有名無名.b無論這個對象被創(chuàng)建在什么區(qū)域 c無論這個對象是否為臨時對象.?例如:Clock clock;Clock *pClock= new Clock;2.2構造函數-語法規(guī)則及特殊性體現(xiàn)類名:類名(形參總表:構造函數的函數體?特殊體現(xiàn)在:-勾造函數名與類名相同一個類可以有多個構造函數懷可有任何返回值-可以有初始化列表(只有構造函數有初始化列表2.2構造函數-倔強變量需要初始化列表?你需要知道的一出生就不能被改變的倔強變量”:const變量-引用-0流對象/你可以暫且先記住它?所以,如果類內包含這三類成員,一定要使用初始化列表對他們進行初始化工作 建議使用初始化列表給成員初始化,因為效率比賦值高2.2構造函數-構造對象的方式?需要熟練掌握下面二種:有名對象:A a或A a(參數無名對象(堆):new A或new A(參數?注:A a;千萬不可寫成A a(;2.3拷貝構造函數-定義?使用一個已經存在的對象去初始化同類的一個新對象時調用拷貝構造函數?拷貝構造函數是一種特殊的構造函數,其形參為本類的對象引用。?規(guī)范,建議使用const引用。2.3拷貝構造函數-語

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論