If you don’t want users of your class to be able to assign objects of its type (password string objects are a good example), you can declare a private assignment operator and copy constructor. Please note that the compiler-synthesized copy constructor and assignment operator are public, therefore, you have to define them explicitly as private members in this case. For example:
class NoCopy {private:NoCopy& operator = (const NoCopy& other) { /*..*/}NoCopy(const NoCopy& other) {/*..*/}public://...};void f(){NoCopy nc; //fine, default constructor calledNoCopy nc2(nc); //compile time error; attempt to call a private copy constructornc2 = nc; //also a compile time error; operator= is private}