Sdílet prostřednictvím


nullptr (rozšíření komponent C++)

nullptr Představuje klíčové slovo hodnotu null ukazatel.Použijte hodnotu null ukazatel označuje, že popisovač objektu, vnitřní ukazatel nebo nativní ukazatele typu neodkazuje na objekt.

Použití nullptr s spravované nebo nativní kód.Kompilátor vydává různé, ale vhodné pokyny pro spravované a nativní ukazatele null hodnoty.Informace o použití ISO standard C++ verze tohoto klíčového slova, viz nullptr.

__nullptr Je klíčové slovo Microsoft specifické klíčové slovo, které má stejný význam jako nullptr, ale týká se pouze nativní kód.Pokud používáte nullptr kódu s nativní C/C++ a potom zkompilujete s /CLR možnost kompilátoru, kompilátor nemůže určit, zda nullptr označuje hodnotu nativní nebo spravované ukazatele null.Chcete-li provést váš záměr srozimitelně pro kompilátor, použijte nullptr určit hodnotu spravované nebo __nullptr určit nativní hodnotu.

nullptr Klíčové slovo je ekvivalentní Nothing v jazyce Visual Basic a null v jazyce C#.

Použití

nullptr Klíčové slovo lze použít kdekoli argument funkce, nativní ukazatel nebo popisovač lze použít.

nullptr Klíčové slovo není typ a není podporován pro použití s:

nullptr Inicializace ukazatel následující typy lze použít klíčové slovo:

  • Nativní ukazatele

  • Popisovač Windows Runtime

  • Spravované úchyt

  • Vnitřní ukazatel spravované

nullptr Klíčové slovo lze použít k testování, pokud je ukazatel nebo popisovač odkaz null před odkaz.

Správně by měl být interpretován volání funkce mezi jazyky, které používají hodnoty ukazatele null pro kontrolu chyb.

Nelze inicializovat popisovač na nulu; pouze nullptr lze použít.Vytváří přiřazení konstantní 0 popisovač objektu krabici Int32 a přetypovat na Object^.

Příklad

Následující příklad kódu ukazuje, že nullptr kdykoli popisovač nativní ukazatele můžete použít klíčové slovo nebo argument funkce lze použít.A příklad ukazuje, že nullptr klíčové slovo lze zkontrolovat odkaz před jeho použitím.

// mcpp_nullptr.cpp
// compile with: /clr
value class V {};
ref class G {};
void f(System::Object ^) {}

int main() {
// Native pointer.
   int *pN = nullptr;
// Managed handle.
   G ^pG = nullptr;
   V ^pV1 = nullptr;
// Managed interior pointer.
   interior_ptr<V> pV2 = nullptr;
// Reference checking before using a pointer.
   if (pN == nullptr) {}
   if (pG == nullptr) {}
   if (pV1 == nullptr) {}
   if (pV2 == nullptr) {}
// nullptr can be used as a function argument.
   f(nullptr);   // calls f(System::Object ^)
}

Příklad

Následující příklad kódu ukazuje, že nullptr a nula zaměnitelné na nativní ukazatele.

// mcpp_nullptr_1.cpp
// compile with: /clr
class MyClass {
public:
   int i;
};

int main() {
   MyClass * pMyClass = nullptr;
   if ( pMyClass == nullptr)
      System::Console::WriteLine("pMyClass == nullptr");

   if ( pMyClass == 0)
      System::Console::WriteLine("pMyClass == 0");

   pMyClass = 0;
   if ( pMyClass == nullptr)
      System::Console::WriteLine("pMyClass == nullptr");

   if ( pMyClass == 0)
      System::Console::WriteLine("pMyClass == 0");
}

Výsledek

  
  
  
  

Příklad

Následující příklad kódu ukazuje, že nullptr je interpretován jako popisovač pro libovolný typ nebo nativní ukazatele myši na libovolný typ.V případě funkce přetížení s úchyty pro různé typy, bude generována chyba nejednoznačnosti.nullptr Musel být explicitně přetypovat na typ.

// mcpp_nullptr_2.cpp
// compile with: /clr /LD
void f(int *){}
void f(int ^){}

void f_null() {
   f(nullptr);   // C2668
   // try one of the following lines instead
   f((int *) nullptr);
   f((int ^) nullptr);
}

Příklad

Následující příklad kódu ukazuje, že obsazení nullptr je povolena a vrátí ukazatel nebo popisovač přetypování typ, který obsahuje nullptr hodnotu.

// mcpp_nullptr_3.cpp
// compile with: /clr /LD
using namespace System;
template <typename T> 
void f(T) {}   // C2036 cannot deduce template type because nullptr can be any type

int main() {
   f((Object ^) nullptr);   // T = Object^, call f(Object ^)

   // Delete the following line to resolve.
   f(nullptr);

   f(0);   // T = int, call f(int)
}

Příklad

Následující příklad kódu ukazuje, že nullptr lze použít jako parametr funkce.

// mcpp_nullptr_4.cpp
// compile with: /clr
using namespace System;
void f(Object ^ x) {
   Console::WriteLine("test");
}

int main() {
   f(nullptr);
}

Výsledek

  

Příklad

Následující příklad kódu ukazuje, že při deklarovat a inicializovat není explicitně úchyty jsou inicializována na výchozí nullptr.

// mcpp_nullptr_5.cpp
// compile with: /clr
using namespace System;
ref class MyClass {
public:
   void Test() {
      MyClass ^pMyClass;   // gc type
      if (pMyClass == nullptr)
         Console::WriteLine("NULL");
   }
};

int main() {
   MyClass ^ x = gcnew MyClass();
   x -> Test();
}

Výsledek

  

Příklad

Následující příklad kódu ukazuje, že nullptr lze přiřadit nativní ukazatele při kompilaci s /clr.

// mcpp_nullptr_6.cpp
// compile with: /clr
int main() {
   int * i = 0;
   int * j = nullptr;
}

Požadavky

Možnost kompilátoru: (není povinné; podporuje všechny možnosti generování kódu, včetně /ZW a /clr)

Viz také

Referenční dokumentace

nullptr

Koncepty

Rozšíření komponent pro platformy běhového prostředí