類與物件(2)

2021-10-04 05:39:44 字數 3283 閱讀 9604

1.類的定義

型別(type)是乙個概念的具體表示。依照oo的理念:如果不

能用內建型別表達乙個概念,則我們設計乙個新型別去表達

乙個概念。

任何乙個資料型別都封裝兩方面的資訊:資料 操作

2.類的組成

(1)一組資料成員(data member)

定義了該類物件所共有的屬性

(類似於結構體成員)

(2)一組成員函式(member function)

定義了該類物件所共有的操作

(類似於結構體中的函式)

3.乙個簡單的類舉例

student 類

該類物件所共有的屬性

姓名,學號,專業,年級,數學成績,英語成績…

該類物件的操作

轉專業跳級/留級

輸出每個物件的資訊

修改每個物件的資訊

等等利用學生類可以構造乙個學生物件。

4.c++類的宣告形式

類是一種使用者自定義型別,宣告形式:

class 類名稱

;注意:(1)類的任何成員都必須指定訪問屬性。一般

將資料成員定義為私有成員或保護成員,

將成員函式定義為公有成員。

(2)類定義必須以分號「;」結束。

5.c++ 中為什麼要定義public, protect, private 三種訪問許可權?

對於類的成員來說,

 有些需要給外面看的,也就是對外介面,那麼就是public,如果沒有

,那麼我們做的工作將是毫無意義的,(別人沒法用)。

 如果不想讓別人知道內部的實現細節,那麼就是private,如:

public:

count()

private:

mycount();

這樣,count是對外的介面,而實現的時候,我們不想讓外面知道怎麼

實現的,就用private,防止它用mycount。

 如果不想讓別人知道,想讓自己的孩子什麼的知道(這裡涉及到繼

承),那麼就可以作為protected

這樣,private是自己私有的,protected是可以讓孩子知道的,public是公開的。

6.三種訪問控制的特點

private:只能由

1.該類中的函式、

2.其友元函式訪問。

不能被任何其他訪問,該類的物件也不能訪問。

protected:可以被

1.該類中的函式、

2.派生類的函式、以及

3.其友元函式訪問。

但不能被該類的物件訪問。

public:可以被

1.該類中的函式、

2.派生類的函式、

3.其友元函式訪問,也可以由

4.該類的物件訪問

注意:友元函式包括3種:

設為友元的普通的非成員函式;

設為友元的其他類的成員函式;

設為友元類中的所有成員函式。

6.例子

鐘錶類class clock

;如果緊跟在類名稱的後面宣告私有成員,則關鍵字private可以省略:

class clock;圓類

const

float pi=

3.14

;class

circle

float

getperimeter()

float

getarea()

private

:float r;

};

7.類定義和使用時注意

1.在類的宣告中不能對資料成員進行初始化。

比如:錯誤哦!!!

class date

2.類的任何成員都必須指定訪問屬性,一般將

資料成員定義為私有成員或保護成員,成員函式定義為公有成員。

3.類中的資料成員可以是c++語法規定的任意資料型別,但

不能用儲存型別auto、register或extern進行修飾。

4.類的成員可以是其他類的物件,但不能以類自身的物件作為本類的成員。

5.類定義必須以分號「;」結束

6.class與struct的不同:

①class中,成員預設情況是private。

②struct中,成員預設情況是public。

8.成員函式

可以在類中說明原型,在類外給出函式體實現,並在

函式名前使用類名加以限定。

將成員函式在類外定義的一般形式是:

返回型別 類名∷成員函式名(參數列)

也可以直接在類內給出函式體,形成內聯成員函式。

允許宣告過載函式和帶預設形參值的函式。

例如:class clock

;void clock::settime(int newh, int newm,int news)

void clock::showtime()

」後,直接寫出屬

於該類的物件名錶。例如:

class coord op1,op2;

(2)宣告了類之後,在使用時再定義對

象,定義的格式與一般變數的定義格

式相同,例如:

class coord ;

// …

main()

10.類中成員的訪問方式

類中成員互訪

 直接使用成員名

 類外訪問

 使用「物件名.成員名」方式訪問 public 屬性的成員。

11.物件成員的引用

通過物件名和成員運算子訪問物件成員

一般形式: 物件名.成員名

例如: stud1.num=100;

stud1.display();

///class student

stud1;

在類外只能訪問public成員,不能訪問private成員。

2.通過指向物件的指標訪問物件中成員

一般形式:指標名->成員名

如: student stud1,*p;

p=&stud1;

coutnum, (*p).num, stud1.num三者等價.

3.通過物件的引用訪問物件中成員

如: student stud1;

student &stud2=stud1;

cout<

2)類與物件

public class dog void hungry void sleeping 乙個類可以包含以下型別變數 構造方法 class person static void main string args 例如 hello hello new hello 這時呼叫的是hello的無引數構造方法 h...

類與物件2

使用的情況 在類的非靜態成員函式中返回類物件本身或物件的引用的時候return this 返回物件 return this 返回物件的位址當引數與成員變數名相同時。在建構函式中 引數與類成員相同時,不能寫成 x x 應為 this x x 避免對同一物件進行賦值操作,判斷兩個物件是否相同時,使用th...

(2)類與物件

什麼是類 類即類別 種類,是物件導向設計最重要的概念,物件是特徵與技能的結合體,而類則是一系列物件相似的特徵與技能的結合體 在現實世界中 先有物件,再有類 世界上肯定是先出現各種各樣的實際存在的物體,然後隨著人類文明的發展,人類站在不同的角度總結出了不同的種類,如人類 動物類 植物類等概念 也就說,...