title: C++ function argument passed by value
body: <p>I know that when you call a function this way :</p>
  
  <pre><code>foo(MyClass a)
  </code></pre>
  
  <p>The object <code>a</code> is being passed by value meaning it's being copied.</p>
  
  <p>My question is how is it being copied?
  say my class don't have a copy constructor, so if it is passed using shallow copy than
  the object may change inside the function?</p>