KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
This example below illustrates how to prevent derived class from being copied. It's based on a base class where both the copy constructor and copy assignment operator are declared private . class Uncopyable { protected: // allow construction and destruction of derived objects... Uncopyable() {} ~Uncopyable() {} private: // but prevent copying... Uncopyable(const Uncopyable&); Uncopyable& operator=(const Uncopyable&); }; We can use this class, combined with private inheritance, to make classes uncopyable: class derived: private Uncopyable {...}; Notice that the destructor in class Uncopyable is not declared as virtual. Previously, I learned that Destructors in base classes should be virtual . Destructors in non-base classes should not be made virtual . In this example, the destructor for Uncopyable is not virtual , but it is being inherited from. This seems to go against the wisdom I've learned previously. When and why should destructor in base class NOT be defined as virtual ?
Tags (comma-separated)
Save Edits
Cancel