型変換演算子を使って、特定の型へのキャストを行う
型変換演算子(Type conversion operator)をオーバーロードして特定の型へのキャストを実現できる。以下では適当に作ったPointer(ポインタ)型クラスのオブジェクトをNULLポインタのときにfalseが返るようにbool型へキャストしている。
#include<iostream> using namespace std; template <class T> class Pointer { public : Pointer(T* p = NULL) : p_(p){} operator bool() const { return(p_ != NULL); } private : T* p_; }; int main() { Pointer<int> p1; if(!p1){ cout << "p1 : NULL Pointer" << endl; }else{ cout << "p1 : Not NULL Pointer" << endl; } int x = 1; Pointer<int> p2(&x); if(!p2){ cout << "p2 : NULL Pointer" << endl; }else{ cout << "p2 : Not NULL Pointer" << endl; } return 0; }
実行結果
p1 : NULL Pointer p2 : Not NULL Pointer