A constructor taking a single argument is by default an implicit conversion operator:
class C {
int I;
//...
public:
C(int i);//constructor and implicit conversion operator
//as well
};
void f() {
C c(0);
c = 5; //implicit conversion of 5 to a C object and
//then assignment
}
The compiler re-edits the above sample as if the programmer had written:
//////////////////////////////////////////////////////////////////////////////////////////
//"c=5;" transformed by the compiler into something like this:
/////////////////////////////////////////////////////////////////////////////////////////
C temp(5);//temporary object instantiated,
c = temp; //assigned using operator =
temp.C::~C(); //temp's destructor activated
It's quick, easy and you get access to all the articles on DevX.
This registration/login is to allow you to read articles on devx.com. Already a member?
To become a member of DevX.com create your Member Profile by completing the form below. Membership is free!
If you have a hot tip and we publish it, we'll pay you. However, due to accounting overhead we no longer pay $10 for a single tip submission. You must accumulate 10 acceptable tips to receive payment. Be sure to include a clear explanation of what the technique does and why it's useful. If it includes code, limit it to 20 lines if possible. Submit your tip here.