- 追加された行はこの色です。
- 削除された行はこの色です。
第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: }