C++で親のプロパティを子が間違えて再定義する場合にハマる
class Circle { public: float x, y; float radius; Circle(); Circle(float x, float y, float radius); }; Circle::Circle() { x = 0.0f; y = 0.0f; radius = 1.0f; } Circle::Circle(float x, float y, float radius) { this->x = x; this->y = y; this->radius = radius; }
class MyCircleObject : public Circle { public: float radius; //Bug MyCircleObject(float x, float y); void someMethod(); }; MyCircleObject::MyCircleObject(float x, float y) : Circle(x, y, 10.0f) { //do nothing };
MyCircleObjectでもradiusを間違えて再定義していることで値がCircleの初期値になっていた。