C++ 快速導覽 - 類別 this 指標

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

int do_something() {
    return a + b;
}


這種寫法指是種簡便的方式,其實編譯器會自動填入 this 指標 (pointer) ,如下
int do_something() {
    return this->a + this->b;
}


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

class Demo {
public:
    Demo(int a, int b) {
        std::cout << "constructor called.." << std::endl;
        
        this->a = a;
        this->b = b;
    }
 
    int do_something() {
        return this->a + this->b;
    }

private:
    int a;
    int b;
};

int main(void) {
    Demo d(22, 60);
    std::cout << d.do_something() << std::endl;

    return 0;
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:classdemo09.cpp
    功能:示範 C++ 程式
    作者:張凱慶
    時間:西元 2013 年 1 月 */


建構函數 (constructor) Demo() 的參數 ab 與變數成員 ab 有相同的名稱,因為明確使用 this 指標,所以可以區分哪個 ab 是參數,另一個 ab 則是變數成員
Demo(int a, int b) {
    std::cout << "constructor called.." << std::endl;
        
    this->a = a;
    this->b = b;
}


編譯執行結果如下



中英文術語對照
成員函數member function
成員member
變數成員variable member
指標pointer
參數parameter
建構函數constructor


您可以繼續參考
類別


相關目錄
回 C++ 快速導覽
回 C++ 教材
回首頁


參考資料
C++ reference
cplusplus.com
Cprogramming.com C++ Tutorial

C++ Primer, Fourth Edition, Stanley B. Lippman...

沒有留言: