C 物件導向

2021-10-22 14:27:03 字數 2990 閱讀 2875

類只是定義了乙個資料型別,不會占用儲存空間。

class 類名 

;

成員列表是類成員的集合,所有成員必須在類的內部宣告,一旦類的定義完成後,就沒有其他方式可以增加或減少成員。

如果類具有成員函式,必須進行宣告,可以選擇是否定義,定義在內部或者外部。

在類內部定義函式體

class 類名};

在類外部定義函式體

class 類名

;返回型別 類名 :: 函式名(形參列表)

如果成員函式是定義在類的內部的話,程式呼叫它時會把他當做是乙個內聯函式,呼叫速度快但是占用額外的記憶體空間。

類的建構函式完成了對物件的資料成員的初始化(意思是,類中的成員變數就是物件的了,雖然在類中變數名字相同,但是歸屬於不同的物件,因此值也可以不同),建構函式是一種特殊的成員函式,不需要為人呼叫,而是在物件建立的時候自動被執行。建構函式不能制定返回型別。乙個類可以有多個建構函式,但是每個建構函式的引數的個數和型別不能相同。如果要初始化的是類的成員,那麼必須使用建構函式初始化列表的方法。

class

name

private

:int b;

};

拷貝建構函式,它的作用是用乙個已經生成的物件來初始化另乙個同類的物件。

類名 (

const 類名& obj)

class

test

test (

int x ,

int y):a

(x),

b(y)

test (

const test& t):a

(t.a),b

(t.b)

void

sum();

private

:int a,b;};

void test::

sum(

)int

main()

析構函式

析構函式的名稱和類的名稱相同,只不過是前面加了乙個~,析構函式不會返回任何值,也不能帶有任何引數,他會在每次刪除所建立的物件時執行。如果類中有需要動態開闢記憶體的成員,而在程式結束之後需要釋放記憶體,這時需要將釋放記憶體的語句寫在析構函式中,系統在程式執行結束後會自動執行析構函式,進行記憶體的釋放以及物件的銷毀。

c++中提供了友元機制,允許乙個類將其非公有成員的訪問許可權授予指定的函式或類。友元的宣告只能定義在類的內部。

形式:

friend 返回值型別 被賦予許可權的類名::函式名(引數型別 引數名)
#include

#include

using

namespace std;

classb;

//類的前向宣告

classa~

a()//析構函式

void

print

(b& a);}

;class

bprivate

:int x;

friend

void a::

print

(b& a)

;//為a賦予該成員函式的訪問許可權};

void a::

print

(b& a)

intmain()

繼承允許在原有類的基礎上建立新的類,c++有三種繼承方式

public(公有繼承),基類中的公有和保護成員保持原屬性,私有成員為基類私有。

private(私有繼承),基類中的所有成員在派生類中都是私有的。

protected(保護繼承),基類的公有成員和保護成員在派生類中成了保護成員,私有成員仍為基類私有。

基類的私有成員不會被派生類訪問的,下面通過getlength()等函式使用私有成員的值。

繼承形式:

class 派生類:繼承方式  基類
派生類的設計

#include

using

namespace std;

class

parallelogram

intgetlength()

intgetwidth()

private

:int length,width;};

class

rectangle

:public parallelogram //公有繼承

//先對基類中的資料成員進行初始化

void

area()

//計算面積};

intmain()

多繼承:

class  派生類名 : 繼承形式 基類名1

, 繼承形式 基類名2,.

...

c++中的虛函式的作用主要是實現了多型的機制。就是用父型別別的指標指向其子類的例項,然後通過父類的指標呼叫實際子類的成員函式,c++允許使用者使用虛函式來完成執行時決議這一操作。虛函式的實現是有兩個部分組成:虛函式表和虛函式指標。

虛函式實現了同乙個呼叫形式,既能呼叫派生類又能呼叫基類的同名函式,在程式中不是通過不同的物件名去呼叫不同派生層次中的同名函式,而是通過指標呼叫它們。例如可以通過同乙個語句 p->play()可以呼叫不同派生層次的play函式,只需要在呼叫前給指標變數p賦予不同的值即可。

classa}

;classb:

public a};

classc:

public a};

intmain()

//b c

這樣使用a-1、虛函式表

虛函式表v-table主要是乙個類的虛函式的位址表,這張表解決了繼承、覆蓋的問題。在有虛函式的類的例項中這個表就被分配在了這個例項的記憶體中,所以,當用父類的指標來操作乙個子類的時候,這個表就指明了實際所應該呼叫的函式。

c 物件導向程式設計 物件導向

什麼是物件導向 是對現實世界理解和抽象的方法。物件導向程式設計的特點 易維護,易擴充套件,靈活性好,重用 類 對事物的抽象定義,即事物具有的共同特徵和行為。物件 即對類進行例項 類是抽象的,物件是具體的 類的定義 語法 訪問修飾符 class 類名類的成員 包括字段,屬性,方法,常量,事件和索引器等...

C 物件導向

它定義了類的物件包括了什麼屬性,以及可以執行哪些操作 呼叫函式 class box 關鍵字 public 確定了類成員的訪問屬性.在類物件作用域內,類的外部是可訪問的 也可以指定類的成員為 private 或 protected box box1 宣告物件 box1,型別為 box box box2...

c 物件導向

0,類變數的申明可以不賦初始值 int 型別的為0,引用型別預設值為null,bool型別為false 1.物件導向的三大特點 封裝 0增加安全 1 良好的封裝能夠減少耦合 2 類內部的實現可以自由地修改 3 類具有清晰的對外介面 繼承 子類是乙個物件,父類的成員只是子類的引用 在繼承時子類的訪問修...