《C 學習筆記》之類和物件

2022-05-19 13:17:04 字數 1768 閱讀 1147

一,對類和物件的理解

人們可以通過類自定義自己需要的型別,新的型別中可以有資料,可以有對資料進行處理的方法。然後對類進行例項化後,就產生了物件,類是物件的抽象,物件是是類的具體化。比如家庭是乙個類,這個類中有資料-----家庭成員,方法-------家庭成員的日常活動。然後這個類具體化後可以產生甲同學的家庭,乙同學的家庭。

二,宣告類型別

1,這裡是乙個宣告類的模板

class 類名

peter,jack;

3,不出現類名,直接定義物件  (不提倡)

class

}peter,jack

六,成員函式

1,訪問型別

訪問符號可以分為三類:private,public,protected

共同點:成員函式可以訪問本類中的任何成員

不同點:私有函式作用域只在本類中,而公有函式可以被類外呼叫,其作用域和類的作用域相同

關係:私有函式也稱為 工具函式 ,它是為公有函式服務,是公有函式的工具

2,inline成員函式(內建函式)

在類內定義的函式,預設為inline型,不用加inline關鍵字,而在類外定義的函式,如果要使它作為內建函式,則需要在類內宣告時和在類外定義時加上關鍵字inline,如下:

class test

public:

inline void display();

private:

inline void student::display()

注意:在函式之外定義inline函式時,只要在宣告或者定義兩者之一加inline就行了,而且,更重要的時,需要把類定義和成員函式的定義都放在同乙個標頭檔案中(或者同乙個原始檔中)。但是這樣不利於藉口和類的實現分離,值得斟酌使用。

3,成員函式的宣告與定義

宣告毋庸置疑是在類裡面,而定義,可以在類內和類外,但是為了把類的藉口和類的實現細節分離,一般都是在乙個獨立的原始檔進行函式的定義,而函式的宣告就跟著類的宣告放在標頭檔案中,這是一種很好的風格。注意,主程式所在檔案和編寫函式定義的原始檔都必須包含宣告類的標頭檔案;當類改變時,包含該類的原始檔都得重新編譯。

接下來是在類外定義成員函式的具體細節:在類外定義函式時,需要在函式名前面加上類名和"::"(作用域限定符),以下是乙個模板

class test

public  

void display();

private

void test::display()

4,成員函式的儲存方式

定義乙個類的三個物件,這三個物件有著各自的資料成員,但是它們的函式成員是相同,共用的。另外,函式**是儲存在物件空間之外的,所以乙個物件所佔的空間的大小只取決於該物件中的資料成員所佔的空間。所有在類內定義或者在類外定義的函式,以及內建函式,都有這個特點。綜上所敘,成員函式和物件之間的關係是邏輯的從屬關係,而不是物理的從屬關係。

5,將關鍵字const加在成員函式的形參表之後,就可以使成員函式宣告為常量。

如: int  tackle() const

const成員不能改變其所操作的物件的資料成員,const必須同時出現在宣告和定義中!!

七,資料的抽象與封裝

類的封裝性→公共介面和私有實現的分離→資訊隱藏

類庫:包括兩個組成部分,(1)類宣告標頭檔案,(2)已經編譯過的成員函式的定義,它是目標檔案

物件,方法,訊息

如:a.out()  中

a:物件   out():方法    a.out():訊息

-----------哈哈,第一篇在寫的學習筆記,可能給自己複習還可以,給別人看還不夠水平吧,希望點選進來的兄弟小力點拍磚

C 學習筆記之類和物件

建構函式 析構函式 訪問控制 例子1 帶預設引數 檔案circle.h if defined circle h define circle h include using namespace std class circle void draw 複製建構函式 circle circle c void...

c 學習筆記之類和物件

一 與生活中的類一樣 程式中的類描述了一種物件,定義乙個完整的類,需要包括字段 屬性 方法 建構函式和析構函式 析構函式在程式編譯時自動生成,可以不必自己寫 定義類的方法和字段時,要通過訪問修飾符來修飾類和類成員的訪問許可權。public為公共訪問,可以有任何其他類成員訪問。private為私有訪問...

C 學習筆記之 類 物件

類是描述具有相同特徵和行為的抽象。物件是類的例項。類的作用就是分類!class關鍵字 class 類名 1 字段 類的共有屬性class car比如以上的brand,price,displacement 簡單的應用 using system namespace lesson12 class main...