C 基礎 (建構函式 析構函式)

2021-09-01 06:20:45 字數 1986 閱讀 2653

constructor中文解釋為建構函式,是一種特殊的函式:constructor function;不應理解為構造器;

constructor保證了物件只要被建立出來就會被初始化;

constructor與類的名字是相同的(大小寫都一模一樣);

constructor沒有任何返回型別;

constructor是成員函式的一種;

除了建構函式(constructor),還有一種叫析構函式(destructor)。建構函式是當物件被呼叫時建立的,析構函式是你的物件被消滅時建立的(釋放掉);

未做過構造不可以做析構;

構造是為了做初始化,但不保證構造了就一定初始化(可能你在建構函式裡做了點別的^ - ^)

##類的建構函式

類的建構函式是類的一種特殊的成員函式,它會在每次建立類的新物件時執行。建構函式的名稱與類的名稱是完全相同的,並且不會返回任何型別,也不會返回 void。建構函式可用於為某些成員變數設定初始值。

例:

#include

using

namespace std;

class

line

;// 成員函式定義,包括建構函式

line::

line

(void

)void line::

setlength

(double len )

double line::

getlength

(void

)// 程式的主函式

intmain()

預設的建構函式沒有任何引數,但如果需要,建構函式也可以帶有引數。這樣在建立物件時就會給物件賦初始值

例:

#include

using

namespace std;

class

line

;// 成員函式定義,包括建構函式

line::

line

(double len)

void line::

setlength

(double len )

double line::

getlength

(void

)// 程式的主函式

intmain()

使用初始化列表來初始化字段:

line::line( double len): length(len)
上面的語法等同於如下語法:

line::line( double len)
假設有乙個類 c,具有多個字段 x、y、z 等需要進行初始化,同理地,您可以使用上面的語法,只需要在不同的字段使用逗號進行分隔,如下所示:

c::c( double a, double b, double c): x(a), y(b), z(c)
類的析構函式是類的一種特殊的成員函式,它會在每次刪除所建立的物件時執行。

析構函式的名稱與類的名稱是完全相同的,只是在前面加了個波浪號(~)作為字首,它不會返回任何值,也不能帶有任何引數。析構函式有助於在跳出程式(比如關閉檔案、釋放記憶體等)前釋放資源。

例:#include using namespace std;

class line;

// 成員函式定義,包括建構函式

line::line(void)

line::~line(void)

void line::setlength( double len )

double line::getlength( void )

// 程式的主函式

int main( ){

line line;

// 設定長度

line.setlength(6.0);

cout << "length of line : " << line.getlength() <ps:本文參考了

C 建構函式 析構函式 虛析構函式

一般地,建立物件和刪除物件時,父類建構函式 子類建構函式 子類析構函式 父類析構函式。特例 如果用new建立了乙個物件,並將父類的指標指向這個子類的物件,那麼用delete撤銷物件時,系統只執行基類的析構函式,而不執行派生類的析構函式。如果希望按照子類析構函式 父類析構函式的順序執行,那麼應該將基類...

C 建構函式,析構函式

一 建構函式 在建立類的物件時自動呼叫的乙個函式,主要是為物件本身做初始化工作 沒有返回值,名字和類的名字相同,因為是在建立物件時候自動呼叫的,所以必須型別為public的,可以帶引數,可以有多個 如果類中沒有建構函式,在下面三種情況下,會自動的新增預設的建構函式 1.如果類中有虛函式,或者類中有虛...

C 建構函式 析構函式

在學習類的成員方法時,遇到了兩個函式。簡單介紹一下 一 建構函式 建構函式是類中比較特殊的成員函式,它也是一種方法。主要用來為物件分配儲存空間,完成初始化操作,例如給類的成員變數賦值等。一般來說,建構函式一旦開始執行,那麼物件的生命週期就開始了,最終它將以析構函式結束。如果乙個類含有建構函式,在例項...