I have this code:
#include <iostream>
using namespace std;
class complex
{
    double re;
    double im;
public:
    complex(): re(0), im(0) {}
    complex(double x) {re = x, im = x;}
    complex(double x, double y) {re=x, im =y;}
    void print() {cout << re << " " << im;}
};
int main()
{
    complex c1;
    double i=2;
    c1 = i;
    c1.print();
    return 0;
}
My question is, why the code in this line compiles.
c1 = i;
The compiler gives no error(or warning), why?
 
     
     
     
    