Conversões definidas pelo usuário em C ++
Recentemente, eu estava navegando na minha cópia dea referência de bolso do C ++ da O'Reilly Media, e fiquei surpreso quando me deparei com uma breve seção e exemplo sobre a conversão definida pelo usuário para tipos definidos pelo usuário:
#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;
}
Venho programando em C ++ há algum tempo, e é a primeira vez que vejo esse tipo de sobrecarga de operador. A descrição deste livro sobre o assunto é um tanto breve, deixando-me algumas perguntas não respondidas sobre esse recurso:
Esse é um recurso particularmente obscuro? Como eu disse, estou programando em C ++ há algum tempo e esta é a primeira vez que me deparei com isso. Não tive muita sorte em encontrar material mais aprofundado sobre isso.Isso é relativamente portátil? (Estou compilando no GCC 4.1)Podem ser feitas conversões definidas pelo usuário para tipos definidos pelo usuário? por exemplo.
operador std :: string () {/ * code * /}