meryngii.neta

今日も新たな"ネタ"を求めて。

継承におけるconst

当たり前かもしれないが、constはクラスを継承するときに指定できない。
typedefを使っても無視される。

struct base
{
	void non_const() { }
};

typedef const base	const_base;

struct derived
	: const_base
{
	
};

void func()
{
	derived d;
	d.non_const(); // OK
}

私は最初できても良さそうだと思った。しかし、派生クラスがconstでない時に基本クラスがconstだったら、派生クラスが基本クラスのconstメンバを呼び出してまずいことになる。