阿瑟 發表
在此篇教學中涵蓋了基本的 多態性 (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");
}
|