NULLとnullptr

ヌル

  NULLは、任意のヌルポインタ定数として定義することができますしたがって、 既存のコードは、の定義を保持することができ  、関数の引数を しかし 異なるタイプへのポインタが同じサイズである必要はありませんので、ザ・  NULL as 0 or 0L, but an implementation may also choose to define it as (void*)0. This latter form of definition is convenient on architectures where sizeof(void*) does not equal the size of any integer type. It has never been wise to use NULL in place of an arbitrary pointer as a  library avoids this problem by providing special macros for the arguments to signal, the one library function that might see a null function pointer.

nullptr

  A null pointer constant is an integer literal (2.13.2) with value zero or a prvalue of type std::nullptr_t.

  A null pointer constant can be converted to a pointer type; the result is the null pointer value of that type and is distinguishable from every other value of object pointer or function pointer type. Such a conversion is called a null pointer conversion. Two null pointer values of the same type shall compare equal. The conversion of a null pointer constant to a pointer to cv-qualified type is a single conversion, and not the sequence of a pointer conversion followed by a qualification conversion (4.4). A null pointer constant of integral type can be converted to a prvalue of type std::nullptr_t. [ Note: The resulting prvalue is not a null pointer value. end note ]

  A prvalue of type pointer to cv T,” where T is an object type, can be converted to a prvalue of type pointer to cv void”. The result of converting a non-null pointer value of a pointer to object type to a pointer to cv void represents the address of the same byte in memory as the original pointer value. The null pointer value is converted to the null pointer value of the destination type.

  A prvalue of type pointer to cv D”, where D is a class type, can be converted to a prvalue of type pointer to cv B”, where B is a base class (Clause 10) of D. If B is an inaccessible (Clause 11) or ambiguous (10.2base class of D, a program that necessitates this conversion is ill-formed. The result of the conversion is a pointer to the base class subobject of the derived class object. The null pointer value is converted to the null pointer value of the destination type.

おすすめ

転載: www.cnblogs.com/tianzeng/p/11567069.html