類和物件 1 建構函式和析構函式的分類和引用

2021-09-27 04:22:16 字數 1529 閱讀 6642

設計建構函式和析構函式的原因

物件導向的思想是從生活中來,手機、車出廠時,是一樣的。

生活中存在的物件都是被初始化後才上市的;初始狀態是物件普遍存在的乙個狀態的

普通方案:

為每個類都提供乙個public的initialize函式;

物件建立後立即呼叫initialize函式進行初始化。

優缺點分析

1)initialize只是乙個普通的函式,必須顯示的呼叫

2)一旦由於失誤的原因,物件沒有初始化,那麼結果將是不確定的

沒有初始化的物件,其內部成員變數的值是不定的

3)不能完全解決問題

1、建構函式定義及呼叫

1)c++中的類可以定義與類名相同的特殊成員函式,這種與類名相同的成員函式叫做建構函式;

2)建構函式在定義時可以有引數;

3)沒有任何返回型別的宣告。

2建構函式的呼叫

自動呼叫:一般情況下c++編譯器會自動呼叫建構函式

手動呼叫:在一些情況下則需要手工呼叫建構函式

2、析構函式定義及呼叫

1)c++中的類可以定義乙個特殊的成員函式清理物件,這個特殊的成員函式叫做析構函式

語法:~classname()

2)析構函式沒有引數也沒有任何返回型別的宣告

3)析構函式在物件銷毀時自動被呼叫

4)析構函式呼叫機制

c++編譯器自動呼叫

3、建構函式的分類

1)無參建構函式。呼叫方法: test t1, t2;

2)有參建構函式。有參構造函式呼叫的三種方式:括號法、等號法、直接呼叫建構函式法

class test2

test2(int _a)//有參建構函式

test2(int _a, int _b)//有參建構函式

test2(const test2& obj)//賦值建構函式(copy建構函式)

~test2()

private:

int a;

int b;

};void main2()

3)拷貝建構函式(copy建構函式、賦值建構函式)

4、構造函式呼叫規則研究

1)當類中沒有定義任何乙個建構函式時,c++編譯器會提供預設無參建構函式和預設拷貝建構函式,進行簡單的成員變數的值複製

2)當類中定義了拷貝建構函式時,c++編譯器不會提供無引數建構函式

3) 當類中定義了任意的非拷貝建構函式(即:當類中提供了有參建構函式或無參建構函式),c++編譯器不會提供預設無參建構函式

4 )預設拷貝建構函式成員變數簡單賦值

總結:只要你寫了建構函式,那麼你必須用。

5、構造析構階段性總結

1)建構函式是c++中用於初始化物件狀態的特殊函式

2)建構函式在物件建立時自動被呼叫

3)建構函式和普通成員函式都遵循過載規則

4)拷貝建構函式是物件正確初始化的重要保證

5)必要的時候,必須手工編寫拷貝建構函式

類和物件 構造析構函式

a.類和物件 1.關鍵字class表明正宣告乙個類,類中資料成員 屬性 和資料功能 行為 經過封裝,使得使用者通過外部介面訪問。2.類的封裝隱藏了實現細節,同時也保證了資料的安全性。3.只要類的外部介面不變,內部實現細節再怎麼修改,使用類庫的程式也不用修改。4.物件是類型別的變數。5.內聯成員函式 ...

PHP 類和物件(建構函式和析構函式)

1.建構函式 construct php 5 允行開發者在乙個類中定義乙個方法作為建構函式。具有建構函式的類會在每次建立物件時先呼叫此方法,所以非常適合在使 用物件之前做一些初始化工作。如下例1 class fun1 tom new fun1 結果為 開頭就呼叫建構函式 注意 如果子類中定義了建構函...

類的構造和析構函式 1

stcok類樣例 class stock public void acquire const std string co,long n,double pr void buy long sum,double price void sell long sum,double price void upda...