Привет всем.
Что-то я немного недоумеваю со следующего кода, который без проблем скомпилировался в VS2010 и VS2012.
////////////////////////////////////////////////////////////////////////////////
//class TCheck
class TCheck
{
public:
virtual void check()const=0;
};//class TCheck
////////////////////////////////////////////////////////////////////////////////
//class TAccessor
class TAccessor
{
public:
virtual const TCheck* get_check()const=0;
};//class TCheck
////////////////////////////////////////////////////////////////////////////////
//class TObject
class TObject:public TAccessor
{
public:
//Формально оно не должно же этой функцией реализовывать TAccessor::get_check
virtual /*const*/ TCheck* get_check()const override;
};//class TObject
//------------------------------------------------------------------------
TCheck* TObject::get_check()const
{
return 0;
}//get_check
////////////////////////////////////////////////////////////////////////////////
int main()
{
TObject obj;
return 0;
}//main
////////////////////////////////////////////////////////////////////////////////
На мой мутный взгляд — компилятор пропустил багу. Он же должен ругаться что TAccessor::get_check не реализован?
Или я чего-то не понимаю?
-- Пользователи не приняли программу. Всех пришлось уничтожить. --