學習筆記:物件導向程式設計技術(C++版)
======================================
CONTENTS
類
類的構成
成員函式的定義
物件的定義和使用
建構函式和解構函式
友員成員
靜態成員
物件成員
常數成員
繼承
單繼承
多繼承
多型
======================================
類
類的構成
類主要由3部分組成:類名、資料成員(data member,也稱為屬性)、成員函式(member function,也稱為服務)。
其中資料成員和成員函式又分為3種,分別是:公有資料成員和成員函式、保護資料成員和成員函式、私有資料成員和成員函式。類的一般定義為:
class className
{
public:
data members;
member functions;
protected:
data members;
member functions;
private:
data members;
member functions;
};
成員函式的定義
把類的定義和實現放在不同的檔案之中,這是一個軟體開發人員的良好程式設計規範。
原因如下:
(1)類的實現圍殲通常較大,將兩者混在一起不便與閱讀、管理和維護。
(2)將類中的成員函式的實現放在其定義檔案中與放在實現檔案中,在編譯時的含義是不一樣的,若將成員函式的實現直接放在類的定義中,則類的成員函
數將作為 行內函數處理。顯然將所有的成員函式都作為行內函數處理是不合適的。
(3)對軟體開發商來說,他們可以向使用者提供一些程式模組,這些程式模組往往只向使用者公開類的定義,即藉口,而不公開程式的原始碼,類的定義與實現
的分開管理可以很好地解決這個問題。
(4)便於團體式的大型軟體的開發。物件的定義和使用
定義了物件後,就可以通過呼叫它的成員函式來實現具體功能。
定義物件的方法:
類名 物件名;
呼叫成員函式的方法:
物件名.方法名;
建構函式和解構函式
當一個物件被建立時,它是否能被正確地初始化,是我們要關心的。
在程式設計中對變數和函式引數的初始化是為了使程式設計更為便捷、有效,同時可以減少程式出錯的可能性。對物件的初始化同樣是處於這些目的。
對物件的初始化是通過建構函式完成的,主要對資料成員進行初始化,並對指標分配記憶體。
解構函式也是一個特殊成員函式,它的主要功能是對類中動態分配的記憶體進行釋放,它在物件消失時自動呼叫。
友員成員
在類的定義中,類的私有資料和保護資料不能隨意被外部函式訪問或修改,只能由類本身的函式訪問修改。
這導致了外部函式對類的私有資料不可訪問性,為程式的重用性和二次開發帶來極大不便。
通過定義友員可以達到由外部函式直接訪問類的私有資料的目的。
靜態成員
一旦建立了一個物件,則這個物件將擁有類中所有的成員,如果某個資料對所有的物件都一樣,則這個資料只要有一個拷貝,而不是每個物件都重複定義這個數
據,形成記憶體浪費。簡單說:一個資料拷貝,所有物件共享。這就可以通過定義靜態資料成員來實現。
物件成員通過對一個類的物件作為另一個類的成員,來豐富類的資料成員的表示途徑,從而可以通過簡單的類來定義複雜的類,實現程式碼的重用和共享,提高程式碼的可維
護性。
常數成員為了避免程式在執行過程中對不能修改的物件進行修改,可以將物件或函式宣告為常數成員。
繼承
定義單繼承的方法:
class 派生類名:派生型別 基類名
{ };
定義多繼承的方法:
class 派生類名:派生型別1 基類名1,派生型別2 基類名2,..,派生型別n 基類名n
{ };
多型
對於同一條訊息,不同的物件有不同的反應,這種不同的反應,表現為c++語言中的多型性。處理這個問題可以採用靜態聯編(通過函式過載和運算子過載實現)
和動態聯編(通過繼承和虛擬函式實現)的方法呼叫相應的函式。
多型性的應用可以使程式設計顯得更為簡捷、便利,它為程式的模組化設計提供了又一手段。來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-441963/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 程式設計基礎·Java學習筆記·物件導向(下)程式設計Java筆記物件
- [筆記]物件導向的程式設計筆記物件程式設計
- C#學習筆記(六)——物件導向程式設計簡介C#筆記物件程式設計
- Python3:物件導向程式設計學習筆記(2)Python物件程式設計筆記
- 物件導向程式設計C++物件程式設計C++
- Java SE 學習---物件導向程式設計Java物件程式設計
- Lua學習筆記--物件導向(三)筆記物件
- C++與物件導向程式設計C++物件程式設計
- Python學習之物件導向程式設計Python物件程式設計
- Flutter學習筆記(8)--Dart物件導向Flutter筆記Dart物件
- js高階 物件導向 學習筆記JS物件筆記
- Ext學習筆記2-物件導向筆記物件
- C++模組2:物件導向程式設計C++物件程式設計
- 軟體設計師:物件導向技術物件
- (GeekBand)C++物件導向高階程式設計(上)第二週筆記(2)C++物件程式設計筆記
- Python學習之路——類-物件導向程式設計Python物件程式設計
- 好程式設計師前端學習路線分享模擬JavaScript中物件導向技術程式設計師前端JavaScript物件
- Python 3 學習筆記之——物件導向Python筆記物件
- C++物件導向程式設計_Part1C++物件程式設計
- 物件導向程式設計(C++篇4)——RAII物件程式設計C++AI
- C++程式設計雜談:物件導向 (轉)C++程式設計物件
- 【python 物件導向】 python物件學習筆記《1》Python物件筆記
- Effective c++(筆記)之繼承關係與物件導向設計C++筆記繼承物件
- 【C++】由Polocar 學習 C++物件導向C++物件
- 物件導向程式設計物件程式設計
- Python學習之物件導向高階程式設計Python物件程式設計
- 【廖雪峰python進階筆記】物件導向程式設計Python筆記物件程式設計
- muduo網路庫學習筆記(0):物件導向程式設計風格和基於物件程式設計風格的比較筆記物件程式設計
- Python學習筆記|Python之物件導向Python筆記物件
- 物件導向筆記物件筆記
- 物件導向程式設計(C++篇3)——析構物件程式設計C++
- 物件導向程式設計(C++篇2)——構造物件程式設計C++
- C++ 物件導向高階設計C++物件
- iOS 開發之 OOA (物件導向分析) & OOD (物件導向設計)& OOP (物件導向程式設計)iOS物件OOP程式設計
- [.net 物件導向程式設計基礎] (2) 關於物件導向程式設計物件程式設計
- 十三、物件導向程式設計物件程式設計
- js物件導向程式設計JS物件程式設計
- 程式設計思想 物件導向程式設計物件