阿瑟 發表
在此篇教學中涵蓋了基本的 多態性 (polymorphism) 與 虛擬函式 (virtual functions).
*注意: C++所有語法大小寫有差. 如果您在執行時發現中文無法顯示請自行將程式修改成英文.#include <iostream.h> #include <stdlib.h> class rectangle { public: virtual void output(); //虛擬函式, 等一下會介紹 void output2(); }; class square : public rectangle { public: void output(); //square中的兩個函式由於和rectangle名稱相同, 因此會取代繼承來的函式 void output2(); }; void rectangle::output() { cout << "這是一個長方形" << endl; } void rectangle::output2() { cout << "這是一個長方形, 非正方形" << endl; } void square::output() { cout << "這是一個正方形" << endl; } void square::output2() { cout << "這是一個正方形, 也算是長方形" << endl; } void main() { rectangle *one; //這是一個rectangle的指標物件 square two; //這是一個square物件 one = &two; //從這邊就比較奇怪一點, //把rectangle指標指向一個square物件的記憶體位置? one -> output(); //虛擬函式被square物件給取代了, 呼叫square::output(), 展現多態性 one -> output2(); //呼叫rectangle::output2(), 非多態 two.output(); //剩下這兩個都是呼叫square下的函式 two.output2(); system("PAUSE"); } |