第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: }

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS