
類別成員可以是資料 (data) 、函數 (function) 與建構子 (constructor) ,資料其實就是專屬於類別的變數 (variable) ,我們在這裡沿用 C++ 的習慣稱之為成員變數 (member variable) ,同樣的,函數也是專屬於類別的,稱之為成員函數 (member function) ,至於建構子屬於特別的成員函數,用來建立該類別物件的專屬函數。
因為建構子用來建立物件,所以建構子沒有回傳值,或著可以這麼想像,建構子預設回傳物件自己本身,因此無須宣告回傳值 (return value) 。
另外,類別定義必須利用存取標籤 (access label) public 或 private 將成員歸類,屬於 public 的成員可以在程式中的任何地方存取, private 則只能在類別裡。
還有另一個存取標籤 protected ,不過這不在我們目前的討論範圍。
我們舉一例如下
#include <iostream>
using namespace std;
class Demo {
public:
int a;
int b;
int do_something();
};
int Demo::do_something() {
return a + b;
}
int main(void) {
Demo t;
t.a = 11;
t.b = 22;
cout << endl;
cout << t.do_something() << endl;
cout << endl;
return 0;
}
/* 《程式語言教學誌》的範例程式
http://pydoing.blogspot.com/
檔名:classdemo.cpp
功能:示範 C++ 程式
作者:張凱慶
時間:西元 2012 年 10 月 */此例中的 Demo 類別宣告三個 public 成員, a 、 b 為成員變數, do_something() 為成員函數,記得, class 大括弧的最後要加上分號
class Demo {
public:
int a;
int b;
int do_something();
};底下為實作 Demo 類別的 do_something() 成員函數
int Demo::do_something() {
return a + b;
}do_something() 的工作很簡單,就是回傳兩個成員變數 a 與 b 的相加值。這裡須注意定義成員函數時,必須在成員函數名稱前加上所屬類別名稱接兩個冒號
Demo::do_something()
這是標明 do_something() 是屬於 Demo 類別的,連續兩個冒號 :: 為作用域運算子 (scope operator) 。沒有這樣寫的話,編譯器 (compiler) 會把 do_something() 當成普通的函數處理。
下面的 main() 直接用小數點運算子設定 a 與 b ,然後印出呼叫 do_something() 的結果
int main(void) {
Demo t;
t.a = 11;
t.b = 22;
cout << endl;
cout << t.do_something() << endl;
cout << endl;
return 0;
}編譯執行看看結果吧

這個例子我們只用 public ,接下來我們要繼續介紹 private ,將資料有效的封裝 (encapsulation) 在物件裡。
| 中英文術語對照 | |
|---|---|
| 類別 | class |
| 物件 | object |
| 關鍵字 | keyword |
| 宣告 | declare |
| 成員 | member |
| 資料 | data |
| 函數 | function |
| 建構子 | constructor |
| 變數 | variable |
| 成員變數 | member variable |
| 成員函數 | member function |
| 回傳值 | return value |
| 存取標籤 | access label |
| 作用域運算子 | scope operator |
| 編譯器 | compiler |
| 封裝 | encapsulation |
您可以繼續參考
基礎篇
相關目錄
回 C++ 入門指南
回 C++ 教材目錄
回首頁
參考資料
http://www.cplusplus.com/doc/tutorial/classes/
http://www.cplusplus.com/doc/tutorial/classes2/
4 則留言:
::是冒號
打錯字,已修改,感謝指正 :)
accsee
access
這邊打錯字了,已修改,感謝指正 :)
張貼留言