型変換演算子を使って、特定の型へのキャストを行う

型変換演算子(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