C++ 速查手冊 V1.00 - 單元 9.4 - private 成員




存取標籤 private 的成員只限類別中可以使用,例如


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

Demo 中宣告了兩個 private 資料成員


014 private:
015    int a;
016    int b;

另外在 public 的建構函數與 do_something() 使用其值


020 Demo d(12, 10);
021 std::cout << d.do_something()
022           << std::endl;

編譯執行,結果如下


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

如果我們在 Demo 以外的地方存取 private 的資料成員,例如 main() 這樣寫


019 int main() {
020    Demo d(12, 10);
021    std::cout << d.a
022              << std::endl;
023
024    return 0;
025 }

編譯時會發生如下的錯誤


$ g++ u0904_1.cpp
u0904_1.cpp:24:19: error: 'a' is a private member of 'Demo'
   std::cout << d.a
                  ^
u0904_1.cpp:18:8: note: declared private here
   int a;
                  ^
1 error generated.
$

因此要在類別以外的地方存取 private 的資料成員,就得透過 public 的成員函數。


另外, private 的資料成員不能被繼承。


continue ...

沒有留言: