典型的類別設計如下
class class_name { access_label_1: // member access_label_2: // member };
利用關鍵字 (keyword) class 宣告類別名稱,其後的大括弧為類別的宣告內容,裡頭用存取標籤 (access label) 區分成員 (member) 的權限。存取標籤有三種,分別是 public 、 private 與 protected ,這三個標籤也都屬於關鍵字。
public 成員可以由所有使用物件的地方自由呼叫, private 成員則限制在類別中呼叫,也就是類別的成員才可以使用 private 成員, protected 成員的使用範圍與 private 成員相同,但是 private 成員不能被繼承 (inheritance) , protected 成員則可以被繼承。
如果在類別宣告中沒有寫存取標籤的話,預設為 private 。
使用 private 成員可達到把資料封裝 (encapsulation) 的目的,此為物件導向程式設計 (object-oriented programming) 的主要特性之一。
成員可以是變數 (variable) 或函數 (function) ,前者稱為成員變數 (member variable) ,這是專屬於物件的變數,後者則稱之為成員函數 (member function) ,這也是專屬於物件的函數,需要透過物件進行呼叫。
注意,大括弧最後的分號是必須的。舉一例如下
#include <iostream> class Demo { public: int a; int b; int do_something() { return a + b; } }; int main(void) { Demo d; d.a = 11; d.b = 22; std::cout << d.do_something() << std::endl; return 0; } /* 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:classdemo01.cpp 功能:示範 C++ 程式 作者:張凱慶 時間:西元 2013 年 1 月 */
此例宣告了類別 Demo ,裡頭有三個成員,兩個 int 變數與一個回傳 int 的函數
class Demo { public: int a; int b; int do_something() { return a + b; } };
然後在 main() 宣告 Demo 型態的變數 d ,此時 Demo 型態的物件 d 已建立,接著再用小數點運算子設定兩個變數成員
Demo d; d.a = 11; d.b = 22;
編譯執行結果如下
我們是把成員函數的定義放到類別宣告中,成員函數的定義可以移出類別宣告,使類別宣告就是單純的宣告
class Demo { public: int a; int b; int do_something(); };
這樣成員函數的實作就移出類別宣告外,在函數名稱前要加上類別名稱與範疇運算子,如下
int Demo::do_something() { return a + b; }
通常類別的宣告會放到標頭檔裡,而成員函數的實作會放到實作檔中。
中英文術語對照 | |
---|---|
類別 | class |
物件 | object |
關鍵字 | keyword |
存取標籤 | access label |
成員 | member |
繼承 | inheritance |
封裝 | encapsulation |
物件導向程式設計 | object-oriented programming |
變數 | variable |
函數 | function |
成員變數 | member variable |
成員函數 | member function |
您可以繼續參考
類別
相關目錄
回 C++ 快速導覽
回 C++ 教材
回首頁
參考資料
C++ reference
cplusplus.com
Cprogramming.com C++ Tutorial
C++ Primer, Fourth Edition, Stanley B. Lippman...
沒有留言:
張貼留言