运算符string(){some code}的作用是什么?

时间:2010-02-10 18:35:49

标签: c++

我在类中有以下代码:

operator string() {
        return format("CN(%d)", _fd);
}

想知道这个运营商做了什么。

我熟悉常用的字符串运算符:

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;

......但不是这个吗?

5 个答案:

答案 0 :(得分:30)

operator Type() { ... }

是(隐式)转换运算符。例如,如果类Animal实现operator string(),则代码

Animal a;
...
do_something_with ( (string)a );

会变成类似

的东西
do_something_with ( (Animal::operator string)(&a) );

有关更多示例,请参阅http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=/com.ibm.xlcpp8a.doc/language/ref/cplr385.htm

答案 1 :(得分:7)

它正在重载强制转换操作符。具有函数

的类
operator string();

定义可以强制转换为字符串。

答案 2 :(得分:1)

如果只返回当前对象的字符串表示,例如用于在控制台上打印。

答案 3 :(得分:1)

它是一个自动类型转换运算符。您正在讨论的这个类可以隐式转换为字符串。这个link可能会为您提供更多示例。

答案 4 :(得分:-2)

对于十进制数字类型,这似乎是一个转换为字符串的运算符。