C++ 速查手冊

9.6 - 存取函數與修改函數

當資料成員被宣告為 privateprotected 的時候,他們就只能透過類別中的成員函數存取,如果要讓類別以外的地方設定或使用 privateprotected 的資料成員,就得透過 public 的成員函數。

像這樣取得 privateprotected 資料成員的函數叫做存取函數 (accessor) ,也是一般俗稱的 getter ,而設定 privateprotected 資料成員的函數叫做修改函數 (mutator) ,也是一般俗稱的 setter ,舉例如下

#include <iostream>
  
class Demo {
public:
    Demo(int pa, int pb) {
        set_a(pa);
        set_b(pb);
    }
    
    int get_a() {
        return a;
    }
    
    int get_b() {
        return b;
    }
    
    void set_a(int pa) {
        a = pa;
    }
    
    void set_b(int pb) {
        b = pb;
    }
    
private:
    int a;
    int b;
};

int main() {
    Demo d(12, 10);
    std::cout << d.get_a() + d.get_b() << std::endl;
    
    return 0;
}

/* 《程式語言教學誌》的範例程式
   http://kaiching.org/
   檔名:u0906.cpp
   功能:示範 C++ 的類別
   作者:張凱慶*/

此例替兩個 private 資料成員分別設置存取函數與修改函數

int get_a() {
    return a;
}
    
int get_b() {
    return b;
}
    
void set_a(int pa) {
    a = pa;
}
    
void set_b(int pb) {
    b = pb;
}

建構函數中改成用修改函數設定 ab

Demo(int pa, int pb) {
    set_a(pa);
    set_b(pb);
}

在類別定義以外的 main() 中,利用存取函數得到 ab 的值

std::cout << d.get_a() + d.get_b() << std::endl;

編譯執行,結果如下

$ g++ u0906.cpp
$ ./a.out
22
$

相關教學影片

上一頁 9.5 - protected 成員
回 C++ 速查手冊首頁
下一頁 9.7 - this 指標
回 C++ 教材
回程式語言教材首頁