this指標與建構函式

2021-07-23 05:24:15 字數 1650 閱讀 4643

this指標

this指標含義及用法

:1、this指標是指向每乙個成員函式的特殊指標,當不同的物件呼叫同乙個類的成員函式**時,編譯器會依據該成員函式的this指標所指向的不同物件來確定應該引用哪個物件的資料成員;

2. 當對乙個物件呼叫成員函式時,編譯程式先將物件的位址賦給this指標,然後呼叫成員函式,每次成員函式訪問資料成員時,由隱含使用this指標;

3. 在c++中,this指標被隱含地宣告為: x *const this,這意味著不能給this 指標賦值; 在x類的const成員函式中,this指標的型別為:const x* const, 這說明this指標所指向的這種物件是不可修改的(即不能對這種物件的資料成員進行賦值操作);

4. 由於this並不是乙個常規變數,所以,不能取得this的位址。

5. 在以下場景中,經常需要顯式引用this指標

(1) 為實現物件的鏈式引用;

(2) 為避免對同一物件進行賦值操作;

(3) 在實現一些資料結構時,如list。

this指標特性:

1、this指標的型別 類型別* const;

2、this指標並不是物件本身的一部分,不影響sizeof的結果;

3、this的作用域在類成員函式的內部;

4、this指標是類成員函式的第乙個預設隱含引數,編譯器自動維護傳遞,類編寫者不能顯式傳遞。例:

#include

using namespace std;

struct date

;void setdate(date* _this, int year, int month, int day)

void printdate(date* _this)

int main()

建構函式

是乙個特殊的成員函式,名字與類名相同,建立類型別物件時,由編譯器自動呼叫,在物件的生命週期內隻且只呼叫一次,以保證每個資料成員都有乙個合適的初始值。類如果沒有顯式定義建構函式時,編譯器會合成乙個預設的建構函式。編譯器生成的預設建構函式使用與變數初始化相同的規則來初始化成員,具有類型別的成員通過執行各自的建構函式來進行初始化。

建構函式特性:

1、函式名與類名相同。

2、沒有返回值。

3、有初始化列表(可以不用)。

4、新物件被建立,由編譯器自動呼叫,且在物件生命期內僅呼叫一次。

5、建構函式可以過載,實參決定了呼叫那個建構函式。

6、如果沒有顯式定義時,編譯器會提供乙個預設的建構函式。

7、無參建構函式和帶有預設值的建構函式都認為是預設建構函式,並且預設建構函式只能有乙個。

8、建構函式不能用const修飾。

建構函式作用:

1、構建物件

2、初始化物件

3、型別轉換

初始化列表

:以乙個冒號開始,接著乙個以逗號分隔的資料列表,每個資料成員後邊跟乙個放在圓括號裡的初始化表示式。

初始化順序:①每個成員在初始化列表中只能出現一次;

②盡量避免用成員初始化成員;

③初始化順序按資料成員在類中定義順序。

注:若類中包含另乙個類,若子類沒有預設的建構函式,則類的建構函式初始化時須對子類物件進行初始化(在初始化列表中初始化)。

有問題的話大家一定要給我說哦!

建構函式與this指標

記憶體分為5大區 靜態區,常量區,棧,堆,區 this 指標,就是乙個指向當前物件的指標,我們知道,定義乙個類,它在記憶體中不佔空間的,只有定義了該類型別的物件時,系統就會為該物件分配一段儲存空間,這段空間裡只儲存成員變數,對於成員函式,是存放在 區的 首先提到的是幾個知識點 1,類類包括 成員和方...

C 建構函式與this指標

c參考原文 參考 1.this指標的用處 乙個物件的this指標並不是物件本身的一部分,不會影響sizeof 物件 的結果。this作用域是在類內部,當在類的非靜態成員函式中訪問類的非靜態成員的時候,編譯器會自動將物件本身的位址作為乙個隱含引數傳遞給函式。也就是說,即使你沒有寫上this指標,編譯器...

複製建構函式與智慧型指標

在許多引擎中,資源的管理是乙個很重要的模組。為防止出現記憶體洩漏的情況,經常採用一些特殊的技術手段,智慧型指標就是其中一種有效方法。其基本原理是 將指標看作類的例項,每種指標對應乙個類,每個具體的指標對應這個類的乙個例項。在類中設兩個成員變數,乙個作為計數器,另乙個則用來儲存此類所對應的new出來的...