object oriented programming in C plus plus : when I use following code than priority is given first to the constructor rather than cast operator so did there is any priority which will be called first

     #include<iostream>
     using namespace std;
     class C1;
     class C2
     {
          int x;
     public:
         operator C2()
         {
           C2 temp;
           cout<<"operator function called"<<endl;
           return temp;
        }
     };
    class C1
    {
       int x;
    public:
       C1():x(10){}
       C1(C2)
      {
        cout<<"constructor called"<<endl;
      }
    };
     int main()
    {
      C1 obj1;
      C2 obj2;
      obj1=obj2;
    }

> Output Constructor called

