Why cant pass-by-value work if the function parameter type is an ABC?
<p>I am reading a book which says:</p>

<blockquote>
  <p>pass-by-value doesn't work if the function you're sending the argument to has a parameter type which is an abstract base class (ABC). You have to pass the argument (which would be a derived class) by reference. </p>
</blockquote>

<p>My questions are:</p>

<p><strong>Why can you not pass the derived class argument by value?</strong> </p>

<p><strong>Is there something "internal" to C++ which requires it to be a reference?</strong> </p>

<p><strong>Is this to do with the way dynamic binding works?</strong></p>
