nullptr

読み:ヌルポインター
読み:ナルポインター
外語:nullptr 英語
品詞:名詞

C++11以降のC++C++/CLIなどの予約語の一つで、NULLポインターを表わすもの。

目次

nullptrは、NULLポインターを表現する。

nullptrを整数型と比較したり整数型に代入することは出来ないが、あらゆるポインター型との比較および代入が出来る。

由来

NULLポインターを表わすキーワードという概念は、決して新しいものではない。

Cでは0または「(void *)0」を定義したNULLというマクロが標準的に使われ、特に後者が整数0とポインター0の区別が自明となるとあり、頻用されていた。

しかしC++では、void *から他のポインターへの暗黙の変換が出来ないため、次のような単純な例ですらコンパイルエラーが生じることになる。

char *p = NULL;

このためC++では、従来のCのような(void *)0が使用できなくなり、整数0で代用することとなり、多くの問題を生じさせながらも長く放置状態とされた。

その間、C#ではnull、C++/CLIではnullptrが実装で定義され使われ、C++でもC++11から、nullptrをC++/CLIから輸入する形で定義することになった。

定義

C++においてnullptrは、元々予約語ではない。したがって、これを追加した場合、従来nullptrという名前の変数や関数などを使っていた実装に影響がある。

一時は、ライブラリでクラスとして定義する案も出されたが、最終的に却下されたようである。

古いC++の場合

C++11普及前に長く使われていたC++03の実装でnullptr相当を実装する例を、以下に紹介する。

const class nullptr_t
{
    public:
        template<typename T> operator T*() const { return 0; }
        template<typename C, typename T> operator T C::*() const { return 0; }
    private:
        void operator&() const;
} nullptr = {};
用語の所属
C++
関連する用語
__null

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club