#include "stdafx.h"
#include "iostream.h"
//////////////////////////////////////動物類
class animal
{
public:
void character();
virtual food();
};
void animal::character()
{
cout<<"動物特徵:不同"<<endl;
}
animal::food()
{
cout<<"動物食物:不同"<<endl<<endl;
}
////////////////////////////////////////長頸鹿類
class giraffe:public animal
{
public:
void character();
virtual food();
};
void giraffe::character()
{
cout<<"長頸鹿特徵:脖子長"<<endl;
}
giraffe::food()
{
cout<<"長頸鹿食物:樹葉"<<endl<<endl;
}
////////////////////////////////////////大象類
class elephant:public animal
{
public:
void character();
virtual food();
};
void elephant::character()
{
cout<<"大象特徵:長鼻子"<<endl;
}
elephant::food()
{
cout<<"大象食物:草"<<endl<<endl;
}
//////////////////////////////////////////一個形參爲基類指針的函數
void f(animal *p)
{
p->character();
p->food();
cout<<"============================"<<endl;
}
//////////////////////////////////////////main主函數
int main()
{
animal p1;
p1.character();
p1.food();
giraffe p2;
p2.character();
p2.food();
f(&p2);//基類的指針可以指向其派生類的地址
elephant p3;
p3.character();
p3.food();
f(&p3);
return 0;
}
#include "iostream.h"
//////////////////////////////////////動物類
class animal
{
public:
void character();
virtual food();
};
void animal::character()
{
cout<<"動物特徵:不同"<<endl;
}
animal::food()
{
cout<<"動物食物:不同"<<endl<<endl;
}
////////////////////////////////////////長頸鹿類
class giraffe:public animal
{
public:
void character();
virtual food();
};
void giraffe::character()
{
cout<<"長頸鹿特徵:脖子長"<<endl;
}
giraffe::food()
{
cout<<"長頸鹿食物:樹葉"<<endl<<endl;
}
////////////////////////////////////////大象類
class elephant:public animal
{
public:
void character();
virtual food();
};
void elephant::character()
{
cout<<"大象特徵:長鼻子"<<endl;
}
elephant::food()
{
cout<<"大象食物:草"<<endl<<endl;
}
//////////////////////////////////////////一個形參爲基類指針的函數
void f(animal *p)
{
p->character();
p->food();
cout<<"============================"<<endl;
}
//////////////////////////////////////////main主函數
int main()
{
animal p1;
p1.character();
p1.food();
giraffe p2;
p2.character();
p2.food();
f(&p2);//基類的指針可以指向其派生類的地址
elephant p3;
p3.character();
p3.food();
f(&p3);
return 0;
}
動物特徵:不同
動物食物:不同
長頸鹿特徵:脖子長
長頸鹿食物:樹葉
動物特徵:不同
長頸鹿食物:樹葉
============================
大象特徵:長鼻子
大象食物:草
動物特徵:不同
大象食物:草
============================
簡單說下關於虛函數的
我們在基類中定義一個虛函數,如果只是基類對象去調用,那沒什麼區別。現在的問題是,基類指針是可以指向派生類對象的地址的,那麼到底調用的是哪一個呢?如果是普通函數,那是按基類中的函數來做,如果是虛函數,則按派生類的來做