第十章 物件和類

2022-09-11 12:24:14 字數 2513 閱讀 7214

通常,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提供了一種新的列舉——作用域內列舉(其列舉的作用域為類):

enum

class egg ;//

or enum struct egg ;

可以使用作用域解析運算子訪問列舉成員。

列舉類成員不能像常規列舉一樣,隱式地轉換為某種底層整型型別(提高了作用域內列舉的型別安全),但可以進行強制型別轉換。

int frodo = int(egg::small)

c++11允許選擇底層整型型別(預設為int):

enum

class : 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 初始...