Compiler Warning (level 3) C4265

 

For the latest documentation on Visual Studio 2017, see Visual Studio 2017 Documentation.

'class' : class has virtual functions, but destructor is not virtual

When a class has virtual functions but a nonvirtual destructor, objects of the type might not be destroyed properly when the class is destroyed through a base class pointer.

This warning is off by default. See Compiler Warnings That Are Off by Default for more information.

The following sample generates C4265:

// C4265.cpp  
// compile with: /W3 /c  
#pragma warning(default : 4265)  
class B  
{  
public:  
   virtual void vmf();  
  
   ~B();  
   // try the following line instead  
   // virtual ~B();  
};   // C4265  
  
int main()  
{  
   B b;  
}  

Show: