C++ 速查手冊

9.4 - private 成員

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

#include <iostream>
  
class Demo {
public:
    Demo(int pa, int pb) {
        a = pa;
        b = pb;
    }
    
    int do_something() {
        return a + b;
    }
    
private:
    int a;
    int b;
};

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

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

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

private:
    int a;
    int b;

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

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

編譯執行,結果如下

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

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

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

編譯時會發生如下的錯誤

$ g++ u0904_1.cpp
u0904_1.cpp:21:20: error: 'a' is a private member of 'Demo'
   std::cout << d.a
                  ^
u0904_1.cpp:15:9: note: declared private here
   int a;
                  ^
1 error generated.
$

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

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

上一頁 9.3 - explicit 指示詞
回 C++ 速查手冊首頁
下一頁 9.5 - protected 成員
回 C++ 教材
回程式語言教材首頁