面向?qū)ο笕筇匦允鞘裁?
如果我們記錯的話,是類,繼承,多態(tài)。
類與繼承都講過了,那多態(tài)哪?
其實函數(shù)重載就是多態(tài)的一種。
多態(tài),就是多種形態(tài)的意思,就是說,一種事物可以表現(xiàn)出多種形態(tài)。就比如說我們,會吃飯,睡覺,會跑步;單單是跑步,可以慢跑,亦可以快跑。用一個成語來形容多態(tài)最恰當不過了:萬種風情!
但是這次我不想說重載,我想說的是虛函數(shù)與抽象類。
class base
{
public:
int b;
void print() {cout << "base" << endl;}
};
我們可以在print函數(shù)前加上virtual,我們順便把其他三個也寫出來(注意里面的變化):
class base
{
public:
int b;
virtual void print() {cout << "base" << endl;}
};
class derived1 : virtual public base
{
public:
int d1;
virtual void print() {cout << "derived1" << endl;}
};
class derived2 : virtual public base
{
public:
int d2;
virtual void print() {cout << "derived2" << endl;}
};
class grandson : public derived1,public derived2
{
public:
int g;
virtual void print() {cout << "grandson" << endl;}
};
這有什么用那?
"'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">我們看看主函數(shù),變化可大了:
void main()
{
base *pb;
base b;
grandson gs;
derived1 d1;
derived2 d2;
pb = & b;
pb->print();
pb = & gs;
pb->print();
pb = & d1;
pb->print();
pb = & d2;
pb->print();
}
相關推薦:如何備考等考C++與面向?qū)ο螅憾嘀乩^承北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |