1. member functions must be defined only if they are required (called), and in the same vein, they will be created by the compiler only if the default constructor, copy constructor, assignment operator, destructor is required, and the class defines them (unless the function is declared as a virtual function in the base class, the function produced by the compiler is non-virtual. public).
2. Not as long as the class does not have a default constructor defined, the copy constructor, the assignment operation is automatically synthesized by the compiler, and they are only generated when "required".
(see http://www.cnblogs.com/reasno/p/4742322.html for details)
3. Although the compiler generates an assignment operator if the creator of the class does not declare it, but sometimes the compiler cannot produce it, including the following two cases:
1). The data member is a const object or reference.
2). A base class declares the assignment operator as private.
Effective C + + clause 5 understand what functions C + + silently writes and calls