類建構函式,類析構函式

2021-08-06 03:32:33 字數 3264 閱讀 7530

類建構函式(the class constructor)是乙個特殊的類成員函式,當我們建立這個類的新物件時,會被執行。

乙個建構函式將被確定與類名相同的名字,沒有任何返回值,包括void。建構函式對於給某些類成員變數設定初始值非常有用。

例子:

#include 

using

namespace

std;

class line ;

// member functions definitions including constructor

line::line(void)

void line::setlength( double len )

double line::getlength( void )

// main function for the program

int main( )

執行結果:

object

is being created

length of line : 6

引數化建構函式

預設的建構函式是沒有引數的,如果你要的話,建構函式也可以有引數。這可以幫助你在建立物件時自動給物件分配初始值。

例子:

#include 

using

namespace

std;

class line ;

// member functions definitions including constructor

line::line( double len)

void line::setlength( double len )

double line::getlength( void )

// main function for the program

int main( )

執行結果:

object is being created, length = 10

length of

line : 10

length of

line : 6

使用初始化列表初始化域

語法如下:

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)
類析構函式是類中的乙個特殊的成員函式,當相對應的乙個物件超出了訪問範圍或者在任何情況下,delete 表示式釋放物件記憶體時該函式將被執行。

類析構函式和對應類有相同的名字並在前面加~,它沒有返回值,也沒有任何引數。它在執行完程式前釋放資源很有用,如關閉檔案,釋放記憶體,等。

例子:

#include 

using

namespace

std;

class line ;

// member functions definitions including constructor

line::line(void)

line::~line(void)

void line::setlength( double len )

double line::getlength( void )

// main function for the program

int main( )

執行結果:

object

is being created

length of line : 6

object

is being deleted

複製建構函式(the copy constructor)

複製建構函式是乙個通過同乙個類先建立的物件來初始化重新建立的物件的建構函式。經常被用在:

1. 用乙個已定義的物件來初始化另乙個物件;

2. 通過將乙個物件作為乙個函式的引數來複製這個物件;

3. 通過作為乙個函式的返回值來複製乙個物件。

如果乙個複製建構函式沒有在乙個類中定義,編譯器會定義。如果在類中有指標變數和一些動態記憶體分配,那麼就必須有乙個複製建構函式。最普通的形式:

classname (const classname &obj)
例子:

#include 

using

namespace

std;

class line ;

// member functions definitions including constructor

line::line(int len)

line::line(const line &obj)

line::~line(void)

int line::getlength( void )

void display(line obj)

執行結果:

normal constructor

allocating

ptrcopy

constructor

allocating

ptr.

copy

constructor

allocating

ptr.

length

ofline :

10freeing memory!

copy

constructor

allocating

ptr.

length

ofline :

10freeing memory!

freeing memory!

freeing memory!

注:when you pass an object to a function by value, a copy of the object is created on the stack.

將line物件傳遞給display時,需要複製物件,因此,會呼叫複製建構函式。

類建構函式 析構函式

下面的例項有助於更好地理解建構函式的概念 include using namespace std class line 成員函式定義,包括建構函式 line line void void line setlength double len double line getlength void 程式的...

C 類建構函式 析構函式

類的建構函式是類的一種特殊的成員函式,它會在每次建立類的新物件時執行。建構函式的名稱與類的名稱是完全相同的,並且不會返回任何型別,也不會返回 void。建構函式可用於為某些成員變數設定初始值。下面的例項有助於更好地理解建構函式的概念 include using namespace std class...

C 類建構函式 析構函式

類的建構函式是類的一種特殊的成員函式,它會在每次建立類的新物件時執行。建構函式的名稱與類的名稱是完全相同的,並且不會返回任何型別,也不會返回 void。建構函式可用於為某些成員變數設定初始值。下面的例項有助於更好地理解建構函式的概念 include using namespace std class...