類別成員可以是資料 (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
這邊打錯字了,已修改,感謝指正 :)
張貼留言