const в конструкторе копирования в C ++

class x  
{  
    int a;  
public:  
    x()  
    {  
         cout<<"\n\ndefault constructor";  
    }  
    x(x& obj)  
    {  
         cout<<"\n\ncopy constructor";  
    }  
    x fun()  
   {  
      x ob;  
      return ob;  
    }  
};  
int main()  
{  
    x ob1;  
    x ob2=ob1.fun();  
    return 0;  
 }  

изначально этот код выдавал ошибку «нет соответствующей функции для вызова 'x :: x (x)'», когда я изменил конструктор копирования на

x(const x& obj)  
{  
    cout<<"\n\ncopy constructor";  
}  

, вывод становится

конструктор по умолчанию

конструктор по умолчанию
все же конструктор копирования не выполняется .... почему?

10
задан Eight 14 November 2011 в 16:02
поделиться