
最基本的就是把成員變數 (variable member) 封裝 (encapsulation) 在類別之中,這時候就要用到 private 存取標籤 (accsee label) 了
class Demo {
public:
void setA(int n);
void setB(int n);
int getA();
int getB();
int do_something();
private:
int a;
int b;
};這裡 a 與 b 已經改放到 private 之後,也由於 a 與 b 都是 private 的,因此另外宣告 public 的 setA() 與 setB() 設定 a 與 b 之值, getA() 與 getB() 取得 a 與 b 之值。
setA() 與 setB() 就是俗稱的 setter ,至於 getA() 與 getB() 是俗稱的 getter 。
因此 setA 、 setB 、 getA 、 getB 的實作很簡單,如下
void Demo::setA(int n) {
a = n;
}
void Demo::setB(int n) {
b = n;
}
int Demo::getA() {
return a;
}
int Demo::getB() {
return b;
}do_something也要稍作改變
int Demo::do_something() {
return getA() + getB();
}我們寫成一個完整範例,如下
#include <iostream>
using namespace std;
class Demo {
public:
void setA(int n);
void setB(int n);
int getA();
int getB();
int do_something();
private:
int a;
int b;
};
int Demo::do_something() {
return getA() + getB();
}
void Demo::setA(int n) {
a = n;
}
void Demo::setB(int n) {
b = n;
}
int Demo::getA() {
return a;
}
int Demo::getB() {
return b;
}
int main(void) {
Demo t;
t.setA(11);
t.setB(22);
cout << endl;
cout << t.do_something() << endl;
cout << endl;
return 0;
}
/* 《程式語言教學誌》的範例程式
http://pydoing.blogspot.com/
檔名:classdemo2.cpp
功能:示範 C++ 程式
作者:張凱慶
時間:西元 2012 年 10 月 */編譯執行結果如下

但是這樣設定變數成員還得呼叫 setA 與 setB ,有點麻煩,我們希望宣告 (declare) 時就能夠直接設定,嗯,這用建構子 (constructor) 就可以了。
| 中英文術語對照 | |
|---|---|
| 類別 | class |
| 資訊隱藏 | information hiding |
| 成員變數 | variable member |
| 封裝 | encapsulation |
| 存取標籤 | accsee label |
| 宣告 | declare |
| 建構子 | constructor |
您可以繼續參考
基礎篇
相關目錄
回 C++ 入門指南
回 C++ 教材目錄
回首頁
參考資料
http://www.cplusplus.com/doc/tutorial/classes/
http://www.cplusplus.com/doc/tutorial/classes2/
2 則留言:
為甚麼要多個getA()和getB()
樓上
因為a, b是private,在class外部不能用他們
getA() 和 getB()是public,程式各處都能用
張貼留言