How to properly initialize class value member?
<p>lets say we have this:</p>

<pre><code>class Foo {

    public:
    Foo(const Bar&amp; b) : m_bar(b) {}

    private:
    Bar m_bar;
};
</code></pre>

<p>Now regarding efficiency <a href="http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.6" rel="nofollow">C++ FAQ LITE</a> says this:</p>

<blockquote>
  <p>Consider the following constructor that initializes member object "x" using an initialization list: Fred::Fred() : x(whatever) { }. The most common benefit of doing this is improved performance. For example, if the expression whatever is the same type as member variable "x", the result of the whatever expression is constructed directly inside "x" — the compiler does not make a separate copy of the object. </p>
</blockquote>

<p>Should the constructor better have the parameter as value instead of reference?</p>

<p>Since I am using the constructor initialization list, would there be a performance difference?</p>

<p>Finally, <em>and most important</em>, would there be a semantic difference? e.g., to the caller of new Foo(Bar())</p>

<p>Thank you</p>

<p>-- Edit --
Corrected the parameter declaration as const reference.</p>
