1. this指標的用處: 一個物件的this指標并不是物件本身的一部分,不會影響sizeof(物件)的結果,----請細品以下概念 this作用域是在類內部,當在類的非靜態成員函式中訪問類的非靜態成員的時候,編譯器會自動將物件本身的地址作為一個隱含引數傳遞給函式,也就是說,即使你沒有寫上this指標,編譯器在編譯的時候也是加上this的,它作為非靜態成員函式的隱含形參,對各成員的訪問均通過this進行, 2. this指標的使用: 一種情況就是,在類的非靜態成員函式中回傳類物件本身的時候,直接使用 return *this;另外一種情況是當引數與成員變數名相同時,如this->n = n (不能寫成n = n), 3. this指標程式示例: this指標是存在與類的成員函式中,指向被呼叫函式所在的類實體的地址,
1.當形參和成員變數同名時,可以用this指標來區別
1 class Data 2 { 3 public: 4 int num; 5 6 //形參和成員名相同 7 void setNum(int num) 8 { 9 //形參num 10 //成員num this->num 11 //num = num;//就近原則 形參num賦值給形參num 12 this->num = num; 13 //將形參num賦值給物件中成員num 14 } 15 }
2.在類的普通成員函式中回傳物件本身(*this)(很重要)
1 #include <iostream> 2 using namespace std; 3 4 class A 5 { 6 public: 7 int get() const{return i;} 8 void set(int x){this->i=x;cout<<"this指標保存的記憶體地址為:"<<this<<endl;} 9 private: 10 int i; 11 }; 12 13 int main() 14 { 15 A a; 16 a.set(9); 17 cout<<"物件a所在的記憶體地址為:"<<&a<<endl; 18 cout<<"物件a所保存的值為:"<<a.get()<<endl; 19 cout<<endl; 20 A b; 21 b.set(999); 22 cout<<"物件b所在的記憶體地址為:"<<&b<<endl; 23 cout<<"物件b所保存的值為:"<<b.get()<<endl; 24 return 0; 25 }

總結:通過這個輸出結果,我們可以看到,物件a的記憶體地址和this指標的一模一樣(都是0017F7E8);而當運行到物件b的時候,它的記憶體地址又和它所對應的this指標指向的記憶體地址一模一樣了(都是0017F7DC),這就說明了this指標變數記錄的是當前物件的記憶體地址,即this指標指向當前的物件!我們可以看到this指標最大的作用就是它保存了當前物件的地址,并且應用指標的形式指向了當前的物件,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/54952.html
標籤:C++
上一篇:學習編程1
下一篇:這個C++程式怎么運行啊?
