У тебя имеется класс Int. В этом классе есть переменная i типа int - поле целочисленного типа. В классе определены:
| Код | Int(int ii) : i(ii) //1-arg constructor { } // (int to Int)
|
...это конструктор, принимающий в качестве аргумента переменную ii типа int и инициализирующий ее значением поле i объекта созданного класса.
| Код | operator int() //conversion operator { return i; } // (Int to int)
|
...это операция преобразования типа. При каждом появлении объекта класса Int в тех местах, где требуется переменная типа int, реально будет использоваться значение поля i данного объекта класса (происходит неявный вызов данной функции-члена).
Добавлено @ 13:54 "long double(i2)" - в скобках требуется переменная типа int, а реально там находится объект класса Int, поэтому здесь срабатывает операция преобразования типа... |