阿瑟 發表
我想C++最引人入勝之處就是他引入的物件導向程式設計. 而在真正去探索物件導向程式設計之前, 小弟要先介紹struct這個資料結構, 他可是C++中物件導向的前身喔.
*注意: C++所有語法大小寫有差. 如果您在執行時發現中文無法顯示請自行將程式修改成英文.#include <iostream.h> #include <stdlib.h> struct numbers { int number1; double number2; }; void main() { numbers a; a.number1 = 5; a.number2 = 5.5; cout << a.number1 << endl; cout << a.number2 << endl; system("PAUSE"); } |
編譯並且執行這隻程式.
小弟先簡單講解一下, struct這種資料結構與陣列第一個不同就是他可以含有不同資料型態的變數. 如此例中的number1 (整數) 與 number2 (浮點數).
資料結構說簡單一點其實就是自訂的資料型態, 因此宣告方法與一般的資料型態並無不同, 如此例中的 numbers a; 就是宣告了一個名稱 (identifier) 為 a的物件.
在這個範例中, numbers其實就像是一個藍本, 而a是成品. 正式的說法, number是一個類別 (class), 而 a 則是一個物件 (object), 也稱為 實體 (Instance) .
而所有以numbers為底本的物件, 都會有number1 與 number2 兩個成員. 這隻程式後面應該不難了解, 指定數值給這兩個成員並且輸出
另外直得注意的一點就是, struct與函數的大括號不同, 大括號後面必須加上分號 ";" 不然會出現編譯錯誤
struct還不能算是純種的類別 (class), 因為他仍是C語言的產物, 不過要了解C++下的類別, 必須從struct講起.
剛剛提過struct是底本, 可以利用這個底本來創造物件.
每個物件都有初始 (construct) 與 終結 (destruct)兩個程序, 其作用就看字面上的意思囉.
初始函式 (constructor) 與 終結函式 (destructor) 兩個函式分別會在物件初始和終結時執行, 剛剛的範例並沒有包含這兩個函式, 小弟在接下來這個範例中補上了:
#include <iostream.h> #include <stdlib.h> struct numbers { int number1; double number2; numbers() { number1 = 5; number2 = 5.5; } ~numbers() { cout << "一個numbers類別的物件被終結了" << endl; } }; void main() { numbers a; cout << a.number1 << endl; cout << a.number2 << endl; system("PAUSE"); } |