類的建構函式和析構函式詳解

2021-08-25 02:40:58 字數 1846 閱讀 3730

1.建構函式定義

類的建構函式是類的一種特殊的成員函式,它會在每次建立類的新物件時執行。

建構函式的名稱與類的名稱是完全相同的,並且不會返回任何型別,也不會返回 void。建構函式可用於為某些成員變數設定初始值。

建構函式主要用於為物件分配空間,進行初始化。

2.性質

(1)建構函式的名字必須與類名相同

(2)建構函式可以有任意型別的引數,但不能指定返回型別。它有隱含的返回值,該值由系統內部使用。

(3)建構函式是特殊的成員函式,函式體可寫在類體內,也可寫在類體外。

(4)建構函式可以過載,即乙個類中可以定義多個引數個數或引數型別不同的建構函式。

(5)建構函式被宣告為公有函式,但它不能像其他成員函式那樣被顯式地呼叫,它是在定義物件的同時被呼叫的。 

3.例項

#include using namespace std;

class line; 

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

line::line(void)

void line::setlength( double len )

double line::getlength( void )

// 程式的主函式

int main( ); 

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

line::line( double len)

void line::setlength( double len )

double line::getlength( void )

// 程式的主函式

int main( )

上面的語法等同於如下語法:

line::line( double len)

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

c::c( double a, double b, double c): x(a), y(b), z(c)

1.析構函式的定義

類的析構函式是類的一種特殊的成員函式,它會在每次刪除所建立的物件時執行。

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

2.性質

(1)析構函式與建構函式名字相同,但它前面必須加乙個波浪號(~);

(2)析構函式沒有引數,也沒有返回值,而且不能過載。因此在乙個類中只能有乙個析構函式;

(3)當撤消物件時,編譯系統會自動地呼叫析構函式。

3.例項

#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() <

當上面的**被編譯和執行時,它會產生下列結果:

object is being created

length of line : 6

object is being deleted

類 建構函式和析構函式

一.類 類定義的變數就是物件 1.建構函式 只有 建立物件的時候系統自動呼叫的函式 初始化物件 1 建構函式名與類名相同 2 建構函式沒有返回值 3 建構函式可以過載 注意 關於建構函式 1 如果建構函式被呼叫了,則一定有乙個新物件被建立了 2 如果有乙個新物件被建立,則一定有乙個建構函式被呼叫了 ...

組合類建構函式 析構函式詳解

組合類 組合類的概念就是 指在乙個類的資料成員中含有乙個或多個類的物件,擁有這樣結構的類就叫組合類。這種以資料成員身份出現的類物件就叫子物件。繼承和組合都可以實現乙個類重用另乙個類的行為功能,那麼如何選擇用組合類還是用繼承?當b與a屬於同一類的範疇,並且b is a kind of a,一般應該把b...

類的建構函式和析構函式

1.把物件的初始化工作放在建構函式中,把清除工作放在析構函式中。當物件被建立時,建構函式被自動執行。當物件消亡時,析構函式被自動執行。這下就不用擔心忘了物件的初始化和清除工作。2.建構函式 析構函式與類同名,由於析構函式的目的與建構函式的相反,就加字首 以示區別。3.建構函式與析構函式都沒有返回值型...