程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++中this指針

C++中this指針

編輯:C++入門知識

this指針只能在一個類的成員函數中調用,它表示當前對象的地址。下面是一個例子:
void Date::setMonth(int mn )
{
month= mn;// 這三句是等價的
this->month= mn;
(*this).month= mn;
}
 
1. this只能在成員函數中使用。
2. 全局函數,靜態函數都不能使用this。
3. 實際上,成員函數默認第一個參數為T* const registerthis。
    如:
       class A{public:int func(int p){}};
    其中,func的原型在編譯器看來應該是:int func(A* const registerthis,int p);
4.  this在成員函數的開始前構造的,在成員的結束後清除。這個生命周期同任一個函數的參數是一樣的,沒有任何區別。
5.  當調用一個類的成員函數時,編譯器將類的指針作為函數的this參數傳遞進去。
    如:
         A a;
         a.func(10);
    此處,編譯器將會編譯成: A::func(&a,10);
6. 和靜態函數沒差別: 編譯器通常會對this指針做一些優化的,因此,this指針的傳遞效率比較高--如vc通常是通過ecx寄存器來傳遞this參數。
7. this在成員函數的開始執行前構造的,在成員的執行棧,也可能是寄存器,甚至全局變量。
8. this是通過函數參數的首參數來傳遞的結束後清除。
9. this指針會因編譯器不同,而放置的位置不同。可能是。
10. this指針是在創建對象前創建.this指針放在棧上,在編譯時刻已經確定.
11. 當一個對象創建後,並且運行整個程序運行期間只有一個this指針.

 

 

摘自 梵聲沐晖


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved