第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