Compilation error due to copy constructor
<pre><code>#include&lt;iostream&gt;

using namespace std;

class Abc
{
        public:

        int a;

        Abc()
        {
    cout&lt;&lt;"Def cstr called\n";
                a=0;
        }


        Abc(Abc &amp;source)
        {
                a=source.a;
                cout&lt;&lt;"copy constructor is called"&lt;&lt;endl;
        }
        void operator = (Abc &amp;source)
        {
                a=source.a;
                cout&lt;&lt;"overloaded assignment operator"&lt;&lt;endl;
        }
        Abc display(Abc ab)
        {
                cout&lt;&lt;"The a in display "&lt;&lt;ab.a&lt;&lt;endl;
                return ab;
        }
};

int main()

{

        Abc a;

        Abc b;

        a.a=10;

        b=a;

        cout&lt;&lt;"b.a ="&lt;&lt;b.a&lt;&lt;endl;

        Abc x;

        x = (a.display(b));

        return 0;

}
</code></pre>

<p>In the line x = (a.display(b)) I am getting the compilation error. On commenting this line it works. Please help in modifying the program so as to compile it successfully and please suggest me what wrong is going here.</p>
