類的每個對象都有自己的數據成員,有多少個對象,就有多少份數據成員的拷貝。然而類的成員函數只有一份拷貝,不論多少個對象,都共用這份成員函數。運行時,成員函數怎么知道哪個對象在調用它?this指針是用于標識一個對象自引用的隱式指針,代表對象自身的地址。
在編譯類成員函數的時候,C++編譯器會自動將this指針添加到成員函數的參數表中。在調用類的成員函數時,調用對象會把自己的地址通過this指針傳遞給成員函數。由于this指針是在程序員不知曉的情況下,由編譯器添加到成員函數參數表中的隱含參數,所以稱它為隱式指針。
注意: 靜態成員函數沒有this指針,因此在靜態成員函數中不能訪問對象的非靜態數據成員,因為費靜態數據成員是通過this指針傳遞給成員函數的。沒有this指針,就以為著不能將對象的地址傳遞給靜態成員函數。這就是靜態成員函數只能訪問靜態數據成員的原因。
在類成員函數中,可以通過this指針返回對象的地址或引用,這是this指針常用的方式。引用是一個地址,允許函數返回引用就意味著函數調用可以被再次賦值,即允許函數調用出現在賦值語句的左邊。
新聞熱點
疑難解答
圖片精選