nullptr
, the pointer literal
(since C++11)
| General topics | ||||||||||||||||
| Flow control | ||||||||||||||||
| Conditional execution statements | ||||||||||||||||
| Iteration statements (loops) | ||||||||||||||||
|
||||||||||||||||
| Jump statements | ||||||||||||||||
| Functions | ||||||||||||||||
| Function declaration | ||||||||||||||||
| Lambda function expression | ||||||||||||||||
inline
specifier
|
||||||||||||||||
| Dynamic exception specifications ( until C++17* ) | ||||||||||||||||
noexcept
specifier
(C++11)
|
||||||||||||||||
| Exceptions | ||||||||||||||||
| Namespaces | ||||||||||||||||
| Types | ||||||||||||||||
| Specifiers | ||||||||||||||||
|
||||||||||||||||
| Storage duration specifiers | ||||||||||||||||
| Initialization | ||||||||||||||||
| Expressions | ||||||||||||||||
| Alternative representations | ||||||||||||||||
| Literals | ||||||||||||||||
| Boolean - Integer - Floating-point | ||||||||||||||||
| Character - String - nullptr (C++11) | ||||||||||||||||
| User-defined (C++11) | ||||||||||||||||
| Utilities | ||||||||||||||||
| Attributes (C++11) | ||||||||||||||||
| Types | ||||||||||||||||
typedef
declaration
|
||||||||||||||||
| Type alias declaration (C++11) | ||||||||||||||||
| Casts | ||||||||||||||||
| Memory allocation | ||||||||||||||||
| Classes | ||||||||||||||||
| Class-specific function properties | ||||||||||||||||
|
||||||||||||||||
| Special member functions | ||||||||||||||||
|
||||||||||||||||
| Templates | ||||||||||||||||
| Miscellaneous | ||||||||||||||||
| General | |||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
| Literals | |||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
| Operators | |||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
| Conversions | |||||||||||||||||||||||||||||||||||||||||||||||||||
Table des matières |
Syntaxe
nullptr
|
|||||||||
Explication
Le mot-clé
nullptr
désigne le littéral de pointeur. C'est une
prvalue
de type
std::nullptr_t
. Il existe des
conversions implicites
de
nullptr
vers la valeur de pointeur nul de tout type pointeur et de tout type pointeur vers membre. Des conversions similaires existent pour toute constante de pointeur nul, qui inclut les valeurs de type
std::nullptr_t
ainsi que la macro
NULL
.
Mots-clés
Exemple
Démontre que
nullptr
conserve la signification de constante de pointeur nul même s'il n'est plus un littéral.
#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); // Correct g(NULL); // Correct g(0); // Correct g(clone(nullptr)); // Correct // g(clone(NULL)); // ERREUR : zéro non littéral ne peut pas être une constante de pointeur nul // g(clone(0)); // ERREUR : zéro non littéral ne peut pas être une constante de pointeur nul }
Sortie :
Function g called Function g called Function g called Function g called
Références
- Norme C++23 (ISO/IEC 14882:2024) :
-
- 7.3.12 Conversions de pointeurs [conv.ptr]
- Norme C++20 (ISO/CEI 14882:2020) :
-
- 7.3.12 Conversions de pointeur [conv.ptr]
- Norme C++17 (ISO/IEC 14882:2017) :
-
- 7.11 Conversions de pointeurs [conv.ptr]
- Norme C++14 (ISO/CEI 14882:2014) :
-
- 4.10 Conversions de pointeurs [conv.ptr]
- Norme C++11 (ISO/IEC 14882:2011) :
-
- 4.10 Conversions de pointeurs [conv.ptr]
Voir aussi
|
constante de pointeur nul définie par l'implémentation
(macro constante) |
|
|
(C++11)
|
type du littéral de pointeur nul
nullptr
(typedef) |
|
Documentation C
pour
nullptr
|
|