第6回はnullptrを説明します。
ポインタをどこも参照していない状態で初期化する際に、従来ではNULLを使っていました。
1: int main() 2: { 3: int* p = NULL; 4: 5: return 0; 6: }
しかし、このNULLはマクロ定義されているだけでVSの場合内部は
#define NULL 0
単純に0という数値であることが分かります。
しかしこの場合、オーバーロードの場合に問題があります。
1: #include <iostream> 2: 3: using namespace std; 4: 5: void func(char n) 6: { 7: cout << "Call char func" << endl; 8: } 9: 10: void func(char* n) 11: { 12: cout << "Call char* func" << endl; 13: } 14: 15: int main() 16: { 17: func(NULL);//func(char)の方が呼ばれる 18: func((char*)NULL);//明示的にキャストしなければならない 19: 20: return 0; 21: }