Why do we differ between copy and direct initialization?
<p>I have following questions and I hope you can help me. 
Code:</p>

<pre><code>A a; //A(void) is called
A b(a); //A(const A&amp;) is called: direct-initialization
A c = a; //A(const A&amp;) is called: copy-initialization
</code></pre>

<p>Why are we differ between these initializations?</p>

<pre><code>1) A b(a);
2) A c = a;
</code></pre>

<p>I think in this case both are the same, because each time the copy-constructor is called.
Or are we differ because a implicit conversion could be possible in 2)?</p>

<p>But I read that also in this case we differ between the initializations:</p>

<pre><code>3)  int a(5);
4)  int a = 5;
</code></pre>

<p>Why are these different initializations?
Thank you in advance!</p>