C++ 速查手冊 V1.00 - 單元 9.6 - 存取函數與修改函數




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


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


001 #include <iostream>
002
003 class Demo {
004 public:
005    Demo(int pa, int pb) {
006       set_a(pa);
007       set_b(pb);
008    }
009
010    int get_a() {
011       return a;
012    }
013    
014    int get_b() {
015       return b;
016    }
017    
018    void set_a(int pa) {
019       a = pa;
020    }
021    
022    void set_b(int pb) {
023       b = pb;
024    }
025
026 private:
027    int a;
028    int b;
029 };
030
031 int main() {
032    Demo d(12, 10);
033    std::cout << d.get_a() + d.get_b()
034              << std::endl;
035
036    return 0;
037 }
038  
039 /* Kaiching Chang 
040    u0906.cpp
041    2014-02 */

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


010 int get_a() {
011    return a;
012 }
013
014 int get_b() {
015    return b;
016 }
017
018 void set_a(int pa) {
019       a = pa;
020 }
021
022 void set_b(int pb) {
023    b = pb;
024 }

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


005 Demo(int pa, int pb) {
006    set_a(pa);
007    set_b(pb);
008 }

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


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

編譯執行,結果如下


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

continue ...

沒有留言: