我有一個類下面的代碼:運算符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;
...但沒有這一項?
+1用於指定它的專有名稱,轉換運算符。 – 2010-02-10 18:40:38
一個很好的例子是經常使用的'operator bool(){...}',它允許一個類型的對象用在'if(object){...} else {...}'中,例如在容器類型中可以實現爲真正意義上的非空。 – wich 2010-02-10 18:49:03
@wich:'運營商布爾'可以給你意想不到的行爲http://stackoverflow.com/questions/2145931/why-is-operator-bool-invoked-when-i-cast-to-long。 – kennytm 2010-02-10 18:56:35