VC11. Фигня с виртуальными функциями.
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 25.02.13 09:08
Оценка:
Привет всем.

Что-то я немного недоумеваю со следующего кода, который без проблем скомпилировался в 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 не реализован?

Или я чего-то не понимаю?
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.