Сообщение об ошибке, кажется, немного вводит в заблуждение в сценарии, когда мы пытаемся delete
использовать virtual
метод.
prog.cpp:4:16: error: deleted function 'virtual void Test::foo()'
prog.cpp:8:2: error: used here
Код
struct Test : public Base
{
Test() {}
virtual void foo () = delete; // error
};
Метод virtual
не может быть delete
по той же причине, почему они не могут оставаться нереализованными в C++03? Есть ли способ упомянуть, что Test
намеренно не реализует virtual foo()
?
(Base*)->foo()
, аBase*
может бытьTest*
, то как мы можем позволитьTest
не реализовыватьfoo
и не быть абстрактным? Какой смысл удалять функцию из производного класса, которая должна существовать? - person Kerrek SB   schedule 24.06.2011