2010-02-10 90 views
12

我有一個類下面的代碼:運算符string(){some code}做什麼?

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; 

...但沒有這一項?

回答

29
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

+1用於指定它的專有名稱,轉換運算符。 – 2010-02-10 18:40:38

+0

一個很好的例子是經常使用的'operator bool(){...}',它允許一個類型的對象用在'if(object){...} else {...}'中,例如在容器類型中可以實現爲真正意義上的非空。 – wich 2010-02-10 18:49:03

+0

@wich:'運營商布爾'可以給你意想不到的行爲http://stackoverflow.com/questions/2145931/why-is-operator-bool-invoked-when-i-cast-to-long。 – kennytm 2010-02-10 18:56:35

1

如果只是返回當前對象的字符串重新抑制,例如用於在控制檯上打印。

+1

更具體地說,它是轉換爲「string」類型的轉換運算符。您也可以創建針對其他類型的轉換運算符。 – 2010-02-10 18:38:50

7

它重載了演員操作。具有功能的類

operator string(); 

定義的可以轉換爲字符串。

+1

它與鑄造無關,它是類型轉換,可能由於鑄造而發生的事情是另一回事。 – wich 2010-02-10 18:46:21

-2

這似乎是一個十進制數字類型的轉換爲字符串的運算符。

1

它是一個自動類型轉換運算符。你正在談論的這個類可以隱式轉換爲一個字符串。這link可能會幫助你幾個例子。

+0

鏈接(http://www.codeguru.com/cpp/tic/tic0131.shtml)不起作用。 – dpatru 2013-02-11 21:32:10