Aracılığıyla paylaş


nullptr (C++ Bileşen Uzantıları)

nullptr Anahtar sözcüðünü temsil eden bir null işaretçi değerini.Nesne tanıtıcısı, iç işaretçi ya da yerel bir işaretçi türü bir nesneye göstermiyor belirtmek için işaretçi null değerini kullanın.

Kullanım nullptr ile yönetilen veya yerel kod.Derleyicinin yönetilen ve yerli null işaretçi değerleri için uygun, ancak farklı yönergeleri yayar.ISO standart C++ sürümü bu anahtar sözcük kullanma hakkında daha fazla bilgi için bkz: nullptr.

__nullptr Aynı anlama sahip Microsoft özel anahtar sözcük anahtar sözcüktür nullptr, ancak yalnızca yerel kod için geçerlidir.Kullanırsanız, nullptr ile doğal c/C++ kodu ve sonra ile derleme /CLR derleyici seçeneği, derleyici belirleyemiyor olup olmadığını nullptr yerel veya yönetilen bir null işaretçi değeri gösterir.Amacınız clear derleyici yapma nullptr yönetilen bir değer belirtmek için veya __nullptr yerel bir değer belirtmek için.

nullptr Anahtar sözcüğünü eşdeğerdir Nothing Visual Basic ve null C#.

Kullanım

nullptr Anahtar sözcüğünü tanıtıcı, doğal işaretçi veya işlev bağımsız değişkeni kullanılabilir herhangi bir yerde kullanılabilir.

nullptr Anahtar sözcüğünü bir tür değil ve ile kullanmak için desteklenmiyor:

  • sizeof

  • typeid

  • throw nullptr(rağmen throw (Object^)nullptr; çalışır)

nullptr Anahtar sözcüğünü başlangıçta aşağıdaki işaretçi türleri kullanılabilir:

  • Yerel işaretçi

  • Windows çalışma zamanı işleyici

  • Yönetilen işleyici

  • Yönetilen iç işaretçi

nullptr Anahtar sözcüğünü, başvuru olarak kullanılan bir işaretçi veya işleci başvurusu null ise önce test etmek için kullanılabilir.

İşaretçi null değerleri için hata denetimini kullanan diller arasında işlev çağrıları doğru yorumlanması.

Sıfırdan bir işleyici başlatılamıyor; yalnızca nullptr kullanılabilir.Nesne tanıtıcısı 0 sabit atama üreten bir kutu içinde Int32 ve bir dönüþtürme Object^.

Örnek

Aşağıdaki kod örneği, gösterir nullptr anahtar sözcüğünü bir tanıtıcı yerlerde yerel işaretçinin kullanılabilir veya işlev bağımsız değişkeni kullanılır.Ve örnek gösteren nullptr anahtar sözcüğü kullanılmadan önce başvuru denetlemek için kullanılır.

// 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 ^)
}

Örnek

Aşağıdaki kod örneği gösteren nullptr ve sıfır kullanılabilir birbirinin üzerinde yerel işaretçiler.

// 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");
}

Çıktı

  
  
  
  

Örnek

Aşağıdaki kod örneği gösteren nullptr herhangi bir türü için bir tanıtıcı veya herhangi bir tür yerel bir işaretçi olarak yorumlanır.Farklı türlerde işleyicileri ile işlevi aşırı olması durumunda bir belirsizlik hata oluşturulur.nullptr Açıkça bir türe gerekirdi.

// 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);
}

Örnek

Aşağıdaki kod örneği, çevrim gösterir nullptr izin verilir ve bir işaretçi veya tutamacı içeren dönüştürme türü verir nullptr değeri.

// 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)
}

Örnek

Aşağıdaki kod örneği gösteren nullptr işlev parametre olarak kullanılır.

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

int main() {
   f(nullptr);
}

Çıktı

  

Örnek

Aşağıdaki kod örneği için başlatılan varsayılan tutamaçları bildirilen ve açıkça başlatıldı olduklarını gösterir 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();
}

Çıktı

  

Örnek

Aşağıdaki kod örneği gösteren nullptr yerel bir işaretçi ile derlerken atanabilir /clr.

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

Gereksinimler

Derleyici seçeneği: (gerekli değil; dahil olmak üzere tüm kod oluşturma seçenekleri tarafından desteklenen /ZW ve /clr)

Ayrıca bkz.

Başvuru

nullptr

Kavramlar

Çalışma platformları için bileşen uzantıları