C 成員函式是如何區別那個物件在呼叫它

2021-10-14 12:02:03 字數 752 閱讀 1762

​ 類的成員函式儲存在**段中,類的成員變數儲存在每個類物件中,所有類物件共享乙份成員函式。

​ 成員函式是如何區別那個物件在呼叫它?

​ 當使用類物件呼叫成員函式時,編譯器會把物件的位址隱式傳遞給成員函式,每個類成員函式都隱藏著乙個引數this指標

​ 在成員函式中之所以能直接訪問成員變數就是隱藏著this指標,當在成員函式中呼叫其它成員函式時,也會把this指標傳遞過去。

函式的引數名和成員變數一致時,可以用this指標區分

如果成員函式的返回值是當前的物件的位址或引用,就可以用this指標實現

可以將this指標作為其他類成員函式的引數,把乙個類物件傳遞給另乙個其他型別的物件,可以實現物件之間的互動

#include

using namespace std;

class student

student

(string name,

char ***,

int id)

void

show

(void

) student&

func

(void

) student*

func

(void)}

;int

main

(int argc,

const

char

* ar**)

C 中常物件 常成員函式 常成員變數

用const修飾的類物件叫做常物件,用const修飾的成員函式叫常成員函式,用const修飾的成員變數叫常成員變數,常物件 型如 const 類名 物件名 類名 const 物件名 說明 1.常物件內的成員變數值不可修改,所以一定要在定義物件時初始化。2.常物件只可以呼叫常成員函式,但是非常物件可以...

C 常成員函式 常資料成員 常物件

常成員函式在宣告和實現時都要帶const關鍵字 常成員函式不能修改物件的資料成員,也不能訪問類中沒有用const宣告的非常成員函式。在任何函式中都不能對常資料成員賦值。對常資料成員初始化,只能通過建構函式的初始化列表。常物件的資料成員在它的生存期內不會被改變,因此定義常物件時必須對其進行初始化。這裡...

在單獨執行緒中執行物件成員函式

問題的提出 實際上所有執行緒都是用來處理c函式的,而不是c 類成員函式。標準庫中提供乙個api函式,這個函式以 函式指標作為執行緒的執行 並在單獨的執行緒中呼叫 函式。問題是在這樣的執行緒庫中不能建立執行物件成員函式的執行緒 只能使用普通的函式。因此,下列 是失敗的 啟動執行緒庫函式的執行緒 int...