C 之類與物件 1

2021-06-18 15:31:05 字數 2989 閱讀 2714

下個階段,我將講解c++中物件導向的部分,也是c++對c語言改進的最重要的部分。以前c++也被叫做是"帶類的c"。今天主要講類的構成,成員函式以及物件的定義和使用。

1.其實這一節,對於用c#開發的人來說,簡直就是駕輕就熟啊。c++類的構成,我想從c的結構體開始說起。c中的結構體我想大家在熟悉不過了。

1

#include

"stdafx.h"2

#include

<

iostream

>34

using

namespace

std;56

struct

kid7;12

13int

main()

14

但是c中的結構體存在缺點:1.main函式中的任意賦值語句都可以訪問結構體中的成員,但在現實生活中並不是什麼資料都可以被隨意訪問的,因此c語言中的結構體的資料是不安全的;2.結構體中的資料和對該資料的操作是分離的,並不是乙個被封裝起來的整體,因此使程式難以重用,影響了軟體生產效率;於是c++中引入了類的概念。

c++中類的一般格式為:

class kid ;

c++中規定如果沒有對類的成員加私有private,保護protected,或公有public,則預設為私有的。而對於c++的結構體來說,成員可以是私有的,保護的或公有的,但預設為公有的;還有要注意的是不能在類的宣告中給資料成員賦值,比如:

class kid

private :

int age=10;

char *name="rookie_j";

char ****="男";

一般情況下,乙個類的資料成員應該宣告為私有的,成員函式宣告為共有的。這樣,內部的資料隱藏在類中,在類的外部無法訪問直接訪問,使資料得到有效的保護。而公有的成員函式就成為一種與類外部溝通的介面。

2.c++中的成員函式有兩種,一種為普通的成員函式:

1

class

kid2;12

1314

void

kid::setkid(

intage,

char

*name,

char

****)

1520

21void

kid::showkid()

22

要注意幾點:1.類名和函式名之間應加上作用域運算子「::」,用於宣告這個成員函式是屬於哪乙個類的,如果在函式名前沒有類名,或既無類名又無作用域運算子「::」,比如:::showkid()或showkid(),那麼這個函式不屬於任何類,不是成員函式,而是普通函式;2.在類的宣告中,成員函式原型的參數列中可以不說明引數的名字,而只說明它的型別,但在類外定義時必須既要說明引數型別又要說明引數名;

另外一種就是內聯成員函式,它又分顯式宣告和隱式宣告:

隱式宣告:

1

class

kid2

14void

showkid()

1518

19};

因為這種定義的內聯成員函式沒有使用關鍵字inline進行宣告,因此叫隱式定義;

顯式宣告:

1

class

kid2;11

1213

inline

void

kid::setkid(

intage,

char

*name,

char

****)

1419

20inline

void

kid::showkid()

21

內聯函式的呼叫就是**的擴充套件,而不是一般函式的呼叫的操作;但要注意的是使用inline定義的內聯函式必須將類的宣告和內聯成員函式的定義都放在同乙個檔案中,否則編譯時無法進行**的置換;

3.在c++中,類與物件的關係,可以用資料型別int和整形變數i之間的關係來模擬。int型別和類型別代表一種抽象的概念,而整形變數和類的物件代表具體的東西。c++把類的變數稱為類的物件,物件也被稱為類的例項;類的物件可以是:

1

class

kid2

kid1,kid2;

也可以是宣告了類後,使用時在定義物件:kid kid1,kid2;(宣告乙個類後,它並不接受和儲存具體的值,只作為生成具體物件的一種「樣板」,只有定義了物件後,系統才為物件分配儲存空間,以存放物件中的成員);

對物件中的成員的訪問可以是:1.物件名.資料成員名/物件名.成員函式名(引數),比如kid1.setkid(10,"rookie_j","男");2.指標訪問物件中成員,比如:class kid; kid kid,*ptr; ptr=&kid;cout

4.最後我們還是一樣,用乙個例項來總結一下今天所講的內容(開發工具:vs2010):

1
#include

"stdafx.h"2

#include

<

iostream

>34

using

namespace

std;56

struct

struct_kid

//結構體

7kid1;

1213

class

kid14

*/28

void

showkid()

//隱式內聯

2932

33}kid2;

//直接定義物件

3435

36inline

void

kid::setkid(

intage,

char

*name,

char

****)

3742

43int

main()

44

結果:

C 之類與物件

都說c 是乙個完全物件導向的語言,我 那天很自豪的也和我說了,好像這個語言很令人振奮。以前學習vb的時候總是感覺很吃力,因為自己對 基本根本沒有親和力,在以前如果給自己一大批 讓自己按著敲,那麼這個對於當時的我來說肯定是世界上最幸福的事情了。很喜歡安靜的敲 的感覺 現在越來越能體會到,是被人賦予靈魂...

C 之類與物件

類的定義語法 私有成員 公有成員 保護成員 物件 由類定義的例項,通過物件可以訪問類的公有成員,私有成員只能通過類內成員 友元函式 友元類訪問 建構函式 預設建構函式 一般建構函式 拷貝建構函式 採用引數常引用 類的組合 類的組合是 is a kind of 的關係,要特別注意類的組合函式的建構函式...

c 之類與物件

類就是一類具有共同特徵的群體 物件是這類群體的某乙個具體的個體 上面的描述很迷,接下來我們通過乙個遊戲的例子來解釋一下什麼是類,什麼是物件。你現在玩王者榮耀轉殖模式,假設十個亞瑟在對線,亞瑟這個英雄就可以說是乙個類,而你操作的那個亞瑟是獨一無二的,是乙個具體的物件。每乙個類都有他的屬性和方法,我們可...