title: Macros to disallow class copy and assignment. Google -vs- Qt
body: <p>To disallow copying or assigning a class it's common practice to make the copy constructor 
  and assignment operator private. Both Google and Qt have macros to make this easy and visible.
  These macros are:</p>
  
  <p>Google:</p>
  
  <pre><code>#define DISALLOW_COPY_AND_ASSIGN(TypeName) \
    TypeName(const TypeName&amp;);   \
    void operator=(const TypeName&amp;) 
  </code></pre>
  
  <p>Qt: </p>
  
  <pre><code>#define Q_DISABLE_COPY(Class) \
    Class(const Class &amp;); \     
    Class &amp;operator=(const Class &amp;);
  </code></pre>
  
  <p>Questions: 
  Why are the signatures of the two assignment operators different? It seems like the Qt version is correct.
  What is the practical difference between the two?</p>