名前空間
変種
操作

nullptr、ポインタ リテラル (C++11 以降)

From cppreference.com
< cpp‎ | language
 
 
C++言語
全般
フロー制御
条件実行文
if
繰り返し文 (ループ)
for
範囲for (C++11)
ジャンプ文
関数
関数宣言
ラムダ式
inline指定子
動的例外仕様 (C++17まで*)
noexcept指定子 (C++11)
例外
名前空間
指定子
const/volatile
decltype (C++11)
auto (C++11)
constexpr (C++11)
consteval (C++20)
constinit (C++20)
記憶域期間指定子
初期化
代替表現
リテラル
ブーリアン - 整数 - 浮動小数点数
文字 - 文字列 - nullptr (C++11)
ユーザー定義 (C++11)
ユーティリティ
属性 (C++11)
typedef宣言
型エイリアス宣言 (C++11)
キャスト
メモリ確保
クラス
クラス固有の関数プロパティ
explicit (C++11)
static

特殊メンバ関数
テンプレート
その他
 
 

目次

[編集] 構文

nullptr

[編集] 説明

キーワード nullptr はポインタ リテラルを示します。std::nullptr_t 型のprvalueです。nullptr から、任意のポインタ型および任意のメンバへのポインタ型のヌルポインタ値への暗黙の型変換が存在します。std::nullptr_t 型の値およびマクロNULLを含む任意のヌルポインタ定数にも同様の変換が存在します。

[編集] キーワード

nullptr

[編集]

nullptr がリテラルでなくなっても、ヌルポインタ定数の意味を保持していることを示します。

#include <cstddef>
#include <iostream>
 
template<class T>
constexpr T clone(const T& t)
{
    return t;
}
 
void g(int*)
{
    std::cout << "Function g called\n";
}
 
int main()
{
    g(nullptr);        // Fine
    g(NULL);           // Fine
    g(0);              // Fine
 
    g(clone(nullptr)); // Fine
//  g(clone(NULL));    // ERROR: non-literal zero cannot be a null pointer constant
//  g(clone(0));       // ERROR: non-literal zero cannot be a null pointer constant
}

出力

Function g called
Function g called
Function g called
Function g called

[編集] 参照

  • C++23標準 (ISO/IEC 14882:2024)
  • 7.3.12 ポインタ変換 [conv.ptr]
  • C++20 standard (ISO/IEC 14882:2020)
  • 7.3.12 ポインタ変換 [conv.ptr]
  • C++17 standard (ISO/IEC 14882:2017)
  • 7.11 ポインタ変換 [conv.ptr]
  • C++14 standard (ISO/IEC 14882:2014)
  • 4.10 ポインタ変換 [conv.ptr]
  • C++11 standard (ISO/IEC 14882:2011)
  • 4.10 ポインタ変換 [conv.ptr]

[編集] 関連項目

処理系定義のヌルポインタ定数
(マクロ定数) [編集]
(C++11)
ヌルポインタ リテラル nullptr の型
(typedef) [編集]
English 日本語 中文(简体) 中文(繁體)