このポリモーフィズムの実装が C++ で望ましいかどうか疑問に思っています。
スーパークラス (cPolygon) と 2 つのサブクラス (cRectangle と cTriangle) があります。問題は、スーパークラスに含まれていないサブクラスの 1 つにメソッドを実装することが適切な形式と見なされるかどうかです。cRectangle でのみsetSomethingメソッドを作成する必要があり ますか? そうする場合、スーパークラス cPolygon にもこのメソッドを作成する必要がありますか (明らかに抽象的ではありません)。
みんなありがとうピート
#include <iostream>
using namespace std;
// Super class
class CPolygon {
protected:
int width, height;
public:
void set_values (int a, int b)
{ width=a; height=b; }
};
// Sublcass Rectangle
class CRectangle: public CPolygon {
public:
int area ()
{ return (width * height); }
// Method only present in rectangle.
// Is this OK?
void setSomething(int a) {
_a = a;
}
private:
int _a;
};
// Subclass Triangle
class CTriangle: public CPolygon {
public:
int area ()
{ return (width * height / 2); }
};
int main () {
CRectangle rect;
CTriangle trgl;
CPolygon * ppoly1 = ▭
CPolygon * ppoly2 = &trgl;
// Is this OK?
rect->setSomething(3);
trgl->set_values(2,3);
ppoly1->set_values (4,5);
ppoly2->set_values (4,5);
cout << rect.area() << endl;
cout << trgl.area() << endl;
return 0;
}