Why constructor isn't called? : <p>Why constructor of class A isn't called when object of this class is passed as an argument to function taking the argument by value?  </p>

<pre><code>class A
{
public:
    A()
    {
        cout &lt;&lt; "A\n";
    }
};

void f_n(A val)
{

}

int main()
{
    A a;
    f_n(a);
    return 0;
}
</code></pre>
