Tengo el siguiente código en una clase:¿qué hace el operador string() {some code} do?
operator string() {
return format("CN(%d)", _fd);
}
y quería saber lo que este operador.
estoy familiarizado con los operadores de cadenas habituales:
bool operator==(const string& c1, const string& c2);
bool operator!=(const string& c1, const string& c2);
bool operator<(const string& c1, const string& c2);
bool operator>(const string& c1, const string& c2);
bool operator<=(const string& c1, const string& c2);
bool operator>=(const string& c1, const string& c2);
string operator+(const string& s1, const string& s2);
string operator+(const Char* s, const string& s2);
string operator+(Char c, const string& s2);
string operator+(const string& s1, const Char* s);
string operator+(const string& s1, Char c);
string& operator+=(const string& append);
string& operator+=(const Char* append);
string& operator+=(const Char append);
ostream& operator<<(ostream& os, const string& s);
istream& operator>>(istream& is, string& s);
string& operator=(const string& s);
string& operator=(const Char* s);
string& operator=(Char ch);
Char& operator[](size_type index);
const Char& operator[](size_type index) const;
... pero no ésta?
+1 para referirse a él por su nombre propio, operador de conversión. –
Un buen ejemplo es el frecuentemente utilizado 'operator bool() {...}' que permite que un objeto del tipo sea usado en 'if (object) {...} else {...}' que por ejemplo en los tipos de contenedor podría implementarse como verdadero para no estar vacío. – wich
@wich: 'operator bool' puede darle un comportamiento inesperado http://stackoverflow.com/questions/2145931/why-is-operator-bool-invoked-when-i-cast-to-long. – kennytm