c 類與物件(1) 構造,複製建構函式

2022-05-29 18:45:14 字數 1648 閱讀 2889

當我們定義乙個基本型別變數時,方法如下:

int

p; #定義乙個int型別變數

bool

b; #定義乙個bool型別變數

float c ; #定義乙個float型別變數

顯然定義變數p適用於儲存整數型別的,變數b是用於儲存布林型別的,變數c是用於儲存浮點數型別的。但是變數宣告的意義不只是這個,另乙個同樣重要的意義就是限定對變數的操作。例如:對p可以進行算術運算,比較運算等,對b可以進行邏輯運算等。這就說明每一種資料型別都包括了資料本身的屬性以及對資料的操作。

但實際上c++定義的基本型別並不能滿足現實世界中各種物件的需要,於是c++提供了對自定義型別的支援,這就是類。類實際上就是使用者自定義的一種資料型別,通過對現實世界的物件進行資料抽象和功能抽象,得到類的資料成員和函式成員。當定義了乙個類之後,便可以定義該型別的變數,這個變數就稱為累的物件(或例項),這個定義的過程也稱為類的例項化。

建構函式:是類的一種特殊的成員函式,它會在每次類被建立時被呼叫。建構函式的名稱與類的名稱是完全相同的,並且不會返回任何型別,也不會返回 void。建構函式可用於為某些成員變數設定初始值。在程式執行中,當遇到物件宣告語句時,程式會向作業系統申請一定的記憶體空間用於存放新建的物件。建構函式的作用就是在物件被建立的過程中利用特定的值初始化這個物件。

預設建構函式:未提供顯式初始值時,用來初始化物件的建構函式。

拷貝建構函式/複製建構函式:拷貝建構函式是一類特殊的建構函式,是使用同一類中之前建立的物件來初始化新建立的物件。

通常用於:

當用類的乙個物件去初始化該類的另乙個物件時;

如果函式的形參是類的物件,呼叫函式時,進行形參和實參的結合是。

如果函式的返回時類的物件,函式執行完成返**用者時。

析構函式:它用來完成物件被刪除前的一些清理工作。析構函式實在物件的生存期即將結束的時刻被自動呼叫的。

示例**:

#includeusing

namespace

std;

//point類的定義

class

point //建構函式

point(point &p)

int gety()

private

: //私有資料成員

float

x, y;

};

第一種情況示例:

int

main()

執行結果:

第二種情況示例:

void

f(point p)

intmain()

執行結果:

第三種情況示例:

//

定義乙個返回值型別為point型別的函式

point g()

intmain()

執行結果:

類與物件 複製建構函式

二進位制複製不複製指向的記憶體單元,這導致兩個 mystring 物件指向同乙個記憶體單元。函式 usemystring 返回時,變數 str 不再在作用域內,因此被銷毀。為此,將呼叫 mystring 類的析構函式,而該析構函式使用 delete釋放分配給 buffer 的記憶體,這將導致 mai...

c 類 建構函式 複製建構函式

複製建構函式是一種特殊的建構函式,它的作用是用乙個已經存在的物件去初始化另乙個物件。一般情況下不需要自行定義複製建構函式,系統預設提供乙個逐個複製成員值的複製建構函式。何時要使用呢?1.將新物件初始化為乙個同類物件 2.按值將物件傳遞給函式 3.函式按值返回物件 4.編譯器生成臨時物件 簡單的樣例如...

類與物件 組合類的建構函式和複製建構函式

初始化列表是用於構造函式引數的初始化,與其他函式不同,建構函式除了有名字,引數列表和函式體之外,還可以有初始化列表,初始化列表以冒號開頭,後跟一系列以逗號分隔的初始化字段。如 class myclock 建構函式的實現和初始化設定 myclock myclock int hh,int mm,int ...