#include class val_holder { public: // convert from int to val_holder val_holder(int i) : val(i+2) {} // convert from val_holder to int operator int() { return val+1; } void print() { std::cout << "val_holder = " << val << std::endl; } protected: int val; }; int main(int argc, char** argv) { val_holder v(5); v.print(); // prints 7 // convert from val_holder to int using conversion function int i = v; std::cout << "i = " << i << std::endl; // prints 8 // convert from int to val_holder using (non-explicit) conversion constructor v = i; v.print(); //prints 10 return 0; }