Определенные пользователем преобразования в C ++
Недавно я просматривал мою копиюC ++ Pocket Reference от O'Reilly Media, и я был удивлен, когда наткнулся на короткий раздел и пример, касающийся пользовательского преобразования для пользовательских типов:
#include <iostream>
class account {
private:
double balance;
public:
account (double b) { balance = b; }
operator double (void) { return balance; }
};
int main (void) {
account acc(100.0);
double balance = acc;
std::cout << balance << std::endl;
return 0;
}
Я некоторое время программировал на C ++, и это первый раз, когда я видел такую перегрузку операторов. Описание этой темы в книге несколько кратко, и у меня остается несколько вопросов без ответа об этой функции:
Это особенно неясная особенность? Как я уже сказал, я некоторое время программировал на C ++, и это первый раз, когда я сталкивался с этим. Мне не повезло найти более подробный материал по этому вопросу.Это относительно портативно? (Я собираю на GCC 4.1)Можно ли выполнить пользовательские преобразования в пользовательские типы? например
оператор std :: string () {/ * code * /}