C++ 速查手冊 V1.00 - 單元 9.7 - this 指標




成員函數中可以直接存取其他成員,例如以下的 do_something()ab 為兩個資料成員


    int do_something() {
       return a + b;
    }

這種寫法指是種簡便的方式,其實編譯器會自動填入 this 指標 (pointer) ,如下


    int do_something() {
       return this->a + this->b;
    }

this 指標用來存取類別中的成員,明確使用 this 指標也不必擔心成員函數的參數名稱是否與變數成員相同,舉例如下


001 #include <iostream>
002
003 class Demo {
004 public:
005    Demo(int a, int b) {
006       this->a = a;
007       this->b = b;
008    }
009  
010    int do_something() {
011       return this->a + this->b;
012    }
013
014 private:
015    int a;
016    int b;
017 };
018
019 int main() {
020    Demo d(22, 60);
021    std::cout << d.do_something()
022              << std::endl;
023
024    return 0;
025 }
026  
027 /* Kaiching Chang 
028    u0907.cpp
029    2014-02 */

建構函數 Demo() 的參數 ab 與資料成員 ab 有相同的名稱,因為明確使用 this 指標,所以可以區分哪個 ab 是參數,另一個 ab 則是資料成員


005 Demo(int a, int b) {
006    this->a = a;
007    this->b = b;
008 }

編譯執行,結果如下


$ g++ u0907.cpp
$ ./a.out
82
$

continue ...

沒有留言: