seesaw said:
When define an interface of all pure virtual functions, will the destructor
of it will automatically virtual, or it has to be declared as virtual?
Should it be declared as "virtual" when defining the interface?
In C++, you don't pay for what you don't use.
Suppose, someday many winters from now, you wrote a program, and then
profiled it, and discovered the only way to make it faster was to take out a
single virtual destructor.
If the C++ committees had decreed that undeclared destructors of purely
abstract base classes were magically virtual, you would be screwed.
So, until that day, get in the habit of writing...
virtual ~myClass() = 0;
....to make destructors pure virtual, too.
(If the abstract class weren't pure - if it had a member that needs
destruction, the = 0 won't prevent this.)