通常,c++程式設計師將介面(類定義)放在標頭檔案中,並將實現(類方法的**)放在源**檔案中。
在oop中,通常把物件成員函式的呼叫稱作傳送訊息給物件。
訪問控制關鍵字:private(類預設的訪問控制)、public(結構體預設的訪問控制)、protected。
將實現細節放在一起,並將它們與抽象分開的思想稱為封裝。
資料隱藏(將資料放在類的私有部分中)是一種封裝;
將實現細節隱藏在私有部分(私有成員函式),也是一種封裝;
將類宣告和類函式的定義放在不同檔案中,亦是一種封裝。
類和結構的區別
1. 預設訪問型別不同。類是private,結構是public;
2. c++程式設計師實用類來實現類描述,而把結構限制為只表示純粹的資料物件。
實現類的成員函式要滿足兩個特殊特徵:
1. 定義成員函式時,使用作用於解析運算子(::)來標識函式所屬的類;
2. 類方法可以訪問類的private元件。
位於類宣告中的私有成員函式將自動成為內聯函式,可以在類宣告之外定義(內聯)成員函式。
類的建構函式和析構函式
建構函式
初始化物件時自動呼叫建構函式:
//假設有乙個stock類
stock a = stock("
", 250, 1.25);//
物件a的初始化1
stock a("
", 250, 1.25);//
物件a的初始化2
建構函式的函式名與類名相同。
類的建構函式沒有返回型別。
定義建構函式的參量名不應與類成員名相同。
預設建構函式
預設建構函式是,未提供顯式初始值時,用來建立物件的建構函式。(避免建立未初始化物件)
建立預設建構函式的方法:
1. 給已有建構函式的說有參量提供預設值;
2. 通過函式過載來定義另乙個沒有引數的建構函式。
呼叫預設建構函式:
stock a;//隱式地呼叫預設建構函式
stock b();//
顯式地呼叫預設建構函式
析構函式
物件過期時(作用域失效)時,將自動呼叫析構函式(每個類物件都必須有乙個析構函式),一般用析構函式完成清理工作。
只需把函式名定義為「類名前加~」即可建立析構函式,而不需要任何引數。
如果程式設計師沒有建立析構函式,則程式將隱式地宣告乙個預設析構函式。
c++11可將列表初始化應用於類。
stock hot_hip = ;stock jock ;
在類成員函式宣告和定義的開頭後置const,可以確保呼叫物件不被類成員函式修改
//函式宣告
void show() const;//
函式定義
void show() const
物件初始化的其它情形
bozo *pc = new bozo("popo
", "
le peu
");//
動態物件
bozo tubby = 32;//
單引數建構函式的情形
this指標指向用來呼叫成員函式的物件。
類作用域
c++的函式名稱的作用域可以是全域性的但不能是區域性的。c++類引入了一種新的作用域:類作用域(在類中定義的名稱的作用域為整個類)。
作用域為類的常量
不允許在類中宣告const常量,因為宣告只是描述物件的形式,而不能建立物件。
但有兩種方法可以宣告作用域為類的常量:
1. 在類中宣告乙個列舉;
2. 在const限定符前使用關鍵字static(該常量與靜態變數儲存在一起,而不是儲存在物件中)。
在c++98中只能使用這種技術宣告值為整數或列舉的靜態常量,而不能儲存double常量。(但c++11消除了這個限制)
c++11提供了一種新的列舉——作用域內列舉(其列舉的作用域為類):
enumclass egg ;//
or enum struct egg ;
可以使用作用域解析運算子訪問列舉成員。
列舉類成員不能像常規列舉一樣,隱式地轉換為某種底層整型型別(提高了作用域內列舉的型別安全),但可以進行強制型別轉換。
int frodo = int(egg::small)
c++11允許選擇底層整型型別(預設為int):
enumclass : short egg ;//
:short將底層整型型別指定為short
第十章 物件和類
物件導向是一種程式設計風格,用於任何一種語言。過程性程式設計 考慮遵循的步驟,使用者希望有哪些功能,我如何提供,如何儲存資料。物件導向程式設計 首先考慮使用者,確定乙個物件的屬性和操作這些屬性的方法。使用者介面有哪些。相當於自己定製的乙個新的型別,這個型別的屬性和可以對這些屬性進行的操作 介面就是將...
第十章 物件和類
c 中,類由兩部分組成 1 類宣告。包括成員變數和成員函式。一般方法在標頭檔案中。2 類方法定義。包括成員函式的定義。一般放在實現源 中。控制訪問中有有兩個關鍵字 private和public 直接上圖 類物件可以直接訪問public成員 而private成員只能通過public方法來訪問。priv...
第十章 物件和類
oop 過程性程式設計和物件導向程式設計 抽象和類 型別是什麼 c 中的類 介面 實現類成員函式class classname 類的建構函式和析構函式 建構函式 預設建構函式bozo int age 建構函式原型 bozo dribble bozo 44 初始化方式1 bozo roon 66 初始...