C 類和物件

2021-08-21 21:13:10 字數 2828 閱讀 3862

一 基本概念

類、物件、成員變數、成員函式。

物件導向三大概念:封裝、繼承、多型。

二 類的封裝

1 封裝,是物件導向程式設計最基本的特性。把資料(屬性)和函式(操作)合成乙個整體,

2 類成員的訪問控制

1)public修飾的成員變數 方法 在類的內部 類的外部都能使用

2)protected:修飾的成員變數方法,在類的內部使用 ,在繼承的子類中可用 ;其他類的外部不能被使用

3) private: 修飾的成員變數方法 只能在類的內部使用 不能在類的外部

三 建構函式

1 c++中的類可以定義與類名相同的特殊成員函式。建構函式是一種特殊的成員函式,與其他成員函式不同,不需要使用者來呼叫它,而是在建立物件時自動執行。

2 建構函式分類,建立物件時呼叫。

1)無引數建構函式: test t1, t2;

2)帶引數的建構函式

a)括號法 :test5 t1(10);

b) 等號法:test5 t2 = (20, 10)

c 直接呼叫:test5 t3 = test5(30);

3)拷貝建構函式

a) 用乙個物件去初始化另乙個類:test4 t2 = t1; //用t1來初始化 t2

b) 括號法:同上,寫法不同 test4 t2(t1); //用t1物件 初始化t2物件

c)函式呼叫,用匿名物件初始化其它物件

#include using namespace std;

class location

//copy建構函式 完成物件的初始化

location(const location & obj) //copy建構函式

~location()

int getx () int gety ()

private : int x , y ;

} ;//業務函式 形參是乙個元素

void f(location p)

//copy建構函式 完成物件的初始化

location(const location & obj) //copy建構函式

~location()

int getx () int gety ()

private : int x , y ;

} ; location g()

void objplay3()

//解決方案: 手工的編寫拷貝建構函式 使用深copy

name(const name& obj1)

~name()

}protected:

private:

char *m_p ;

int m_len;

};//物件析構的時候 出現coredump

void objplaymain()

void main91()

3 執行順序

1) 成員變數的初始化順序與宣告的順序相關,與在初始化列表中的順序無關

2) 初始化列表先於建構函式的函式體執行

4建構函式和析構函式的呼叫順序研究

1)當類中有成員變數是其它類的物件時,首先呼叫成員變數的建構函式,呼叫順序與宣告順序相同;之後呼叫自身類的建構函式

2)析構函式的呼叫順序與對應的構造函式呼叫順序相反

3)初始化列表用來給const屬性賦值。

#include using namespace std;

class a

~a()

protected:

private:

int a;

};//1 建構函式的初始化列表 解決: 在b類中 組合了乙個 a類物件 (a類設計了建構函式)

//根據建構函式的呼叫規則 設計a的建構函式, 必須要用;沒有機會初始化a

//新的語法 constructor::contructor() : m1(v1), m2(v1,v2), m3(v3)

class b

b(int _b1, int _b2, int m, int n) : a1(m), a2(n), c(0)

~abcd()

int geta()

protected:

private:

int a;

int b;

int c;

};class mye

mytest(int a, int b)

~mytest()

protected:

private:

int a;

int b;

int c;

public:

int getc() const

void setc(int val)

};int main()

八 物件的動態建立和釋放

c++提供了較簡便而功能較強的運算子new和delete來取代malloc和free函式。

注意: new和delete是運算子,不是函式,因此執行效率高。

class test

~test()

private:

int a;

};//分配物件new delete

//相同 和 不同的地方 new能執行型別建構函式 delete操作符 能執行類的析構函式

void main()

C 類和物件 類和物件

c 中物件的型別稱為類,類代表了某一批物件的共性和特徵,類是物件的抽象,而物件是類的具體例項,類是抽象的,不占用記憶體,而物件是具體的,占用 儲存空間,這點很重要,讀者需要牢記。類是使用者自己指定的型別,如果程式中要用到類型別,必須自己根據需要進行宣告,或者使用別人已設計好的類,c 標準本身並不提供...

C 物件和類

1,特殊的類 字串string include include using namespace std int main 類似於標準庫函式,我們不需要記住每種 類 的全部操作,只需要在使用過程中記住一些常用的操作就可以了。如果有需要的話,可以求助於相關書籍或網路 2,當我們對string進行種種操作...

C (類和物件)

類成員函式 類的成員函式指標那些把定義和原型寫在類定義內部的函式,就想類定義中的其他變數一樣。類訪問修飾符 類成員可以定義為public,private或protected。預設情況下是定義為private。建構函式 類的建構函式是一種特殊的函式,在建立乙個新物件是呼叫。析構函式 類的析構函式也是一...