(The avoidance of) Copy mechanics in C++
<blockquote>
  <p><strong>Possible Duplicate:</strong><br>
  <a href="http://stackoverflow.com/questions/3422125/why-copy-constructor-and-assignment-operator-are-disallowed">Why copy constructor and assignment operator are disallowed?</a>  </p>
</blockquote>



<p>I'm learning C++ from a solid C background, and in the eagerness to avoid the errors of previous C++ that I gleaned from reddit and hacker news, I've been using the <a href="http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml" rel="nofollow">Google C++ style guide</a> and LLVM's source code as references for my own code. One thing that sticks out is both the projects' use of the following code. The following is taken from LLVM's include/Support/MemoryBuffer.h:</p>

<pre><code>MemoryBuffer(const MemoryBuffer &amp;); // DO NOT IMPLEMENT
MemoryBuffer &amp;operator=(const MemoryBuffer &amp;); // DO NOT IMPLEMENT
</code></pre>

<p>Google <a href="http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml?showone=Copy_Constructors#Copy_Constructors" rel="nofollow">echoes</a> this usage. Clearly, it's a good thing to disable these "copy constructors".</p>

<p>So my question is: why are these things so scary, and (if they are not guarded against) what does their use look like and what effect does it cause in code?</p>
