title: prevent accidental object copying in C++
body: <p>In our company's coding standard, we have been told to "be aware of the ways (accidental) copying can be prevented".</p>
  
  <p>I am not really sure what this means, but assume that they mean we should stop classes from being copied if this is not required.</p>
  
  <p>What I can think of is as follows:</p>
  
  <ol>
  <li>Make the copy constructor of a class private.</li>
  <li>Make the assignment operator (operator=) of a class private.</li>
  <li>Make the constructor of a class explicit (to stop classes from being created using incorrect variables).</li>
  <li>For all classes that carry out memory allocation and where copying is required, make sure that the copy constructor and assignment operator carry out deep copying rather than shallow copying.</li>
  </ol>
  
  <p>Am I on the right track? Is there anything I might have missed out?</p>