星期一, 4月 25, 2005

C++ 的使用者自訂型別轉換

之前從來沒有想過 C++ 有這個功能.
在 class 下定義一個 member function 格式如下
operator type(){}

在有需要的時候 compiler 會找到這個 member function 進行適當的轉型動作
例如最常見的 while( std::cin >> input) 就是 compiler 動的手腳
他會去 call input 的 operator void*() 進行轉型
但是比較詭異的是像底下程式碼最後的結果是 int
為什麼不是 bool ??
#include
class Test{
public:
operator int(){
return 0;
}
operator bool(){
return true;
}
};

int main(){
Test test;
if( test == false ){
std::cout << "int\n"; }else{ std::cout << "bool\n"; } return 0; }

沒有留言: