[問題] 解構子的多型
這個問題困擾了我一段時間,這一大段程式裡面其實有些錯,是要改的
但不影響我想問的觀念 main也可以不要去看它
以前記得老師解這題時,告訴我們若依照Apple物件解構的順序是
呼叫~Fruit() => ~Fruit()呼叫~Apple() =>~Apple()完成解構 => ~Fruit()完成解構
看得出來有多型的方法呼叫在,可是同學和我討論時,說要完成多型
必需子物件方法和父類別提供方法要同樣名字,才可以實現多型
但~Apple() 和 ~Fruit()不同名,所以不會完成多型呼叫,我一時間也不知道該怎麼解釋
特來請教大家
class Fruit{
private:
double weight;
char *color;
public:
Fruit(double, char *);
virtual ~Fruit(); }; // 這裡是虛擬函式 可以操作子物件的方法
^^^^^^^^^^^^^^^^^^^^^
Fruit::Fruit(double w, char *col) {
weight = w;
color = new char[strlen(col)+1];
strcpy(color, col); }
Fruit::~Fruit(){
delete color; }
class Apple:public Fruit{
private:
char *variety;
public:
Apple(double, char *, char *);
~Apple(); };
Apple::Apple(double w, char *col, char *var): Fruit(w,col) {
variety = new char[strlen(var)+1];
strcpy(variety, var); }
Apple::~Apple(){
delete variety; }
main(){
Fruit *basket[20];
int i;
double weight;
char color[128], variety[128];
for(i=0; i<20; i++)
basket[i] = new Apple(weight, color, variety);
delete [] basket; }
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.166.139.111
推
03/09 01:08, , 1F
03/09 01:08, 1F
→
03/09 01:08, , 2F
03/09 01:08, 2F
→
03/09 10:57, , 3F
03/09 10:57, 3F
→
03/09 10:57, , 4F
03/09 10:57, 4F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章