Why does the compiler give me a warning that my class is not abstract if I have a pure virtual function?

But if I declare my class to be abstract without any pure virtual functions I don't get a warning?

That is like a "Are you sure..." prompt to ask the user if he really knowns what he is doing.

Also why have you renamed pure virtual to abstract?