類與物件學習總結

2021-08-19 08:37:28 字數 4796 閱讀 2889

類與物件

一、  定義類和物件

1. 一般形式:

class 類名    定義類時首字母要大寫;

public;公有段資料成員和成員函式

protected;保護段資料成員和成員函式

private;私有段資料成員和成員函式

};  

此處分號不可省略!!!

private

用於宣告私有成員。私有成員只能在類中可見,不能在類外或派生類中使用。

2. 返回型別  類名::函式名(參數列)

作用域區分符由兩個冒號構成,它用於標識屬於什麼類的成員。

3.成員函式:類的成員函式是實現類的行為屬性的成員。

3.一般將成員函式宣告為函式原型,在類外具體實現成員函式。

●必須在定義了類之後,才可以定義類的物件。

4.下面是乙個簡單的類。

class student //

以class開頭}

};student stud1,stud2; //

定義了兩個

student

類的物件

stud1

和stud2

二、  

訪問物件成員

只有公有成員在類體系外可見。

物件成員的訪問形式與訪問結構的形式相同,運算子「.」和「->」用於訪問物件成員。

圓點:物件名.公有成員

指標:物件指標變數名->公有成員

三、  

例題題目:寫乙個程式,輸入矩形的長和寬,輸出面積和周長

分析:將長、寬變數和設定長,寬,求面積,以及求周長的三個函式「封裝」在一起,就能形成乙個「矩形類」。

長、寬變數成為該「矩形類」的「成員變數

」,三個函式成為該類的「

成員函式」。

**實現:class jvxing

int zc()

void init( int w_,int h_ )

}; //

必須有分號

intmain( )

1.

在類的定義中不能對資料成員進行初始化。

2.

類的任何成員都必須指定訪問屬性,一般將資料成員定義為私有成員或保護成員,將成員函式定義為公有成員。

3.

類中的資料成員可以是c++

語法規定的任意資料型別。

4.

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

5.

類定義必須以分號「

;」結束

6.class與struct的不同:

(1)class中,成員預設情況是private。

(2)struct中,成員預設情況是public。

三、內聯函式

1.內聯函式作用

減少頻繁呼叫小子程式的執行的時間開銷

2. 內聯函式機制

編譯器在編譯時,將內聯函式的呼叫以相應**代替

3. 內聯函式宣告

inline 函式原型

注:內聯函式僅在函式原型作一次宣告。

適用於只有1 ~ 5行的小函式

不能含有複雜結構控制語句 ,不能遞迴呼叫

例如:classcoord

int getx()

int gety()

private:

int x,y;

四、  建構函式與析構函式

建構函式名與類名相同。建構函式可以有任意型別的引數,但不能有返回型別,建構函式在建立類物件時自動呼叫。

析構函式名是在類名之前冠以乙個波浪號「~」。析構函式沒有引數,也沒有返回型別。

原型:類名::類名(參數列);

類名::~類名()

五、  帶引數的建構函式

帶引數的建構函式可以在建立乙個物件時,用指定的資料初始化物件的資料成員。(必須用引數初始化)

六、  過載建構函式

函式名相同,但是引數不同(型別不同或者個數不同)的一組函式。

七、  複製建構函式

特點:1.複製建構函式名與類名相同,並且也沒有返回值型別。

2.複製建構函式可寫在類中,也可以寫在類外。

3.複製建構函式要求有乙個類型別的引用引數。

4.如果沒有顯式定義複製建構函式,系統自動生成乙個預設形式的複製建構函式。

淺複製:

利用系統自帶的複製函式,只能用於資料成員是簡單資料成員時,不需要自己重新寫複製建構函式。例如:

1. #include

2. 3.usingnamespace

std;

4. 5.class

box 6.

7. ; 22.

23.

box::box(int

h,int

w,int

l):length(l),width(w),height(h)

24.

25.int

box::volume

() 26.

27.

32.

33.int

main()

34.

35.

深複製:

當資料成員資源是由指標指示的堆,系統複製物件時只進行(位址值)複製,而不會重新分配記憶體。這樣程式執行時會產生物件操作異常:另外,當物件作用域結束後,又會錯誤地重複釋放堆。所以,這種情況下,需要我們自己寫複製建構函式。

格式:類名::(const 類名 & 引用名,…);

八、     類的其他成員

類定義中除了一般指定訪問許可權的成員,還可以定義各種特殊用途的成員。

1.常成員

2.靜態成員

3.友元

(一)常成員

//常資料成員是指資料成員在例項化被初始化後,其值不能改變。

//在類的成員函式說明後面可以加const關鍵字,則該成員函式成為常量成員函式

//使用const說明的資料成員稱為常資料成員。

//如果在乙個類中說明了常資料成員,那麼建構函式就只能通過初始化列表對該資料成員進行初始化,而任何其他函式都不能對該成員賦值。

(二)常物件

//如果在說明物件時用const修飾,則被說明的物件為常物件。

//常物件的說明形式如下:

類名 const 物件名[(參數列)];

或者const 類名 物件名[(參數列)];

//在定義常物件時必須進行初始化,而且不能被更新。

說明:(1)c++不允許直接或間接更改常物件的資料成員。

(2)c++規定常物件只能呼叫它的常成員函式、靜態成員函式、建構函式(具有公有訪問許可權)。

(三)常成員函式

//在類中使用關鍵字const說明的函式為常成員函式,常成員函式的說明格式如下:

型別說明符 函式名(參數列) const;

const是函式型別的乙個組成部分,因此在函式的實現部分也要帶關鍵字const。

常成員函式不能更新物件的資料,也不能呼叫非const修飾的成員函式(靜態成員函式、建構函式除外)

2.靜態成員

//類成員冠以static宣告時,稱為靜態成員。

//靜態資料成員為同類物件共享。

//靜態成員函式與靜態資料成員協同操作。

//靜態成員不屬於某乙個單獨的物件,而是為類的所有物件所共有。

//靜態成員函式的作用不是為了物件之間的溝通,而是為了能處理靜態資料成員: 保證在不依賴於某個物件的情況下,訪問靜態資料成員

//公有訪問許可權的靜態成員,可以通過下面的形式進行訪問:

類名::靜態成員的名字

物件名.靜態成員名字

物件指標->靜態成員的名字

在靜態成員函式內部,直接訪問。

#include

using namespace std ;

class  counter

void shownum() ;  

void a:: memberfun( int x )

;(二) 友元類

若f類是a類的友元類,則f類的所有成員函式都是a類的友元函式。在程式中,友元類通常設計為一種對資料操作或類之間傳遞資訊的輔助類。

九、  類的包含

//類的包含是程式設計中一種軟體重用技術。即定義乙個新的類時,通過編譯器把另乙個類 「抄」進來。

//當乙個類中含有已經定義的類型別成員,帶引數的建構函式對資料成員初始化,須使用初始化語法形式。

建構函式 ( 形參表 ) : 物件成員1(形參表 ) , …, 物件成員n (形參表 ) ;

十、  心得

類與物件算是首次接觸c++吧,感覺和c語言完全不同,由習慣的語言一下轉到乙個全新的語言模式很不適應,學起來也特別困難。雖然一直在說就是乙個框架,乙個套路。但是這個套路還是掌握不好。在我看來類與物件最重要的就是定義類這方面。

而且我們在除錯程式時需要一步一步的來,每定義乙個就寫乙個主函式,過了就注釋掉。繼續寫下乙個定義。這樣可以在第一時間找出**中的錯誤並修改,不會等到最後面對一百甚至幾百個錯誤**。

寫程式時我們也需要先分析,這個程式我們需要什麼,需要完成什麼功能,列出乙個大體的提綱。然後按照這個提綱一點一點的定義。這樣會省很大的功夫,避免了重複或遺漏功能。

類與物件學習總結

一 1.類的定義 1 類是對具有相同屬性和行為的一組物件的抽象與統一描述。是使用者自定義的資料型別 2 類的定義包括行為和屬性兩個部分。3 屬性以資料表示,行為通過函式實現。2.c 類定義的格式 class 類名 各成員函式的實現 3.注意事項 1 類的成員可以是其他類的物件,但不能以類自身的物件作...

類與物件學習總結

在大一上學期,我學習了些簡單的c語言程式,不過當時只是根據看到的題目寫出演算法來解決問題。新學期學習了類與物件之後,對程式有了新的體會。在學習類與物件時,了解了寫程式的兩種方法,一是面向過程。二是物件導向。其中面向過程我認為就是直接通過主函式或者借用其他函式,在主函式中直接寫演算法的程式。比如 he...

類與物件學習總結

終於接觸到正式的c 內容了 類與物件。程式設計習慣 1 函式單一原則即乙個函式實現乙個功能 2 建構函式必須至少是兩個乙個帶參乙個不帶參,get set函式必須寫,其次寫功能函式 3 定義類的物件名首字母大寫,變數小寫,常量全大寫。除錯技巧 類每增加乙個成員函式都要在主函式中進行測試,每增加乙個功能...