It doesn't matter if this is the only virtual function.  What matters is whether there's a derived class (and whether the destructor is called via a CFile* pointer).  If there's not, then no need for a virtual destructor.