16 1 2 Cvirtual shape class shape public
16 -1 -2 虛擬函數-宣告虛擬函數 在C++類別是使用virtual關鍵字來宣告虛擬函數。 例如:shape的父類別,如下所示: class shape { public: double x, y; shape(double x, double y) { this->x = x; this->y = y; } virtual double area() { return 0; } }; n
16 -1 -2 虛擬函數-覆寫虛擬函數 當我們繼承shape類別時,就可以覆寫虛擬函數, 例如:宣告circle類別繼承shape類別,如下所示: class circle : public shape { public: double r; circle(double x, double y, double r) : shape(x, y) { this->r = r; } double area() { return (3. 1416*r*r); } }; n
16 -3 -2 多形的實作-繼承抽象類別 class circle : public shape { private: double r; public: circle(double x, double y, double r): shape(x, y) { … } void area() { cout << "圓面積: " << 3. 1416*r*r << endl; } }; class rectangle : public shape { public: rectangle(double x, double y) : shape(x, y) { } void area() { cout << "長方形面積: " << x*y << endl; } }; class triangle : public shape { public: triangle(double x, double y) : shape(x, y) {} void area() { cout << "三角形面積: " << x*y/2 << endl; } };
- Slides: 23