x-ite's diary

覚え書きです。想定読者は俺

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の初期値になっていた。