回覆列表
  • 1 # 使用者4157362544454

    直接用子類物件呼叫函式當然沒問題,基類指標指向派生類物件是多型性的體現。什麼是多型呢?多型就是不同物件接受相同的訊息,但是卻產生不同的行為,舉一個很簡單的例子,有一個圖形類,他有幾個派生類,如圓形,三角形,矩形。圖形類有一個函式area();用來求面積,但是由於不同圖形求面積的方法不同,要由具體的派生類來決定,所以可以把它定義為一個虛擬函式,由派生類來過載這個函式,所以不同的派生類裡面area()函式的函式體是不同的,建立一個基類指標*p,讓他指向不同的派生類物件,p在呼叫area()方法時,就會呼叫派生類的area()方法了。多型的一個好處就是提高了程式碼的重用性,如果圖形類又有一個新的派生類五邊形,要求他的面積只需要把剛才的p指標再指向一個五邊形物件,而其他的程式碼無需任何更改!在附上例子吧!class shape{ public: virtual int area();}class circle: public shape{ virtual int area(){ ...}}class triangle: public shape{ virtual int area(){ ...}}class rectangle: public shape{ virtual int area(){ ...}}int main(){ shape *p; circle c; triangle t; rectangle r; p=&c; p->area();//呼叫circle的area(); p=&t; p->area();//呼叫triangle的area(); p=&r; p->area();//呼叫rectangle的area();}只是大概意思,供參考。

  • 中秋節和大豐收的關聯?
  • 一徵三議兩公開是什麼?