When the following empty class is written: Class empty{}; class Empty {Public:empty () {}//default constructor empty (const empty&) {}//default copy constructor ~empty () {} The default destructor empty& operator= (const empty&) {}//default assignment operator}; the destructor for the compiler output is a non-virtual version, unless the class base The class itself declares a virtual destructor. The compiler outputs the copy constructor and the copy assignment operator, simply copying each non-static member variable from the object to the target object. Special: When one of the following two conditions is not met, the compiler rejects the output operator=1. If class contains referenc or const members, you must define the copy assignment operator yourself. 2. If a base class declares the copy assignment operator as private, the compiler refuses to generate a copy assignment operator for the derived class.
Article 5: Understand what functions C + + silently writes and calls