我在类中有以下代码:
operator string() {
return format("CN(%d)", _fd);
}
Run Code Online (Sandbox Code Playgroud)
并想知道这个运营商做了什么.
我熟悉通常的字符串运算符:
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;
Run Code Online (Sandbox Code Playgroud)
......但不是这个吗?
ken*_*ytm 32
operator Type() { ... }
Run Code Online (Sandbox Code Playgroud)
是(隐式)转换运算符.例如,如果类Animal实现operator string(),那么代码
Animal a;
...
do_something_with ( (string)a );
Run Code Online (Sandbox Code Playgroud)
会变得像
do_something_with ( (Animal::operator string)(&a) );
Run Code Online (Sandbox Code Playgroud)
它正在重载演员操作员.具有该功能的类
operator string();
Run Code Online (Sandbox Code Playgroud)
已定义可以强制转换为字符串.