Сообщение об ошибке, кажется, немного вводит в заблуждение в сценарии, когда мы пытаемся 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