nullptr (C++/CLI ve C++/CX)

nullptr anahtar sözcüğü null işaretçi değerini temsil eder. Nesne tanıtıcısının, iç işaretçinin veya yerel işaretçi türünün bir nesneye işaret etmediğini belirtmek için null işaretçi değeri kullanın.

Yönetilen veya yerel kodla kullanın nullptr . Derleyici, yönetilen ve yerel null işaretçi değerleri için uygun ancak farklı yönergeler yayar. Bu anahtar sözcüğün ISO standart C++ sürümünü kullanma hakkında bilgi için bkz . nullptr.

__nullptr anahtar sözcüğü, ile aynı anlama nullptrsahip olan ancak yalnızca yerel kod için geçerli olan Microsoft'a özgü bir anahtar sözcüktür. Yerel C/C++ koduyla kullanır nullptr ve ardından /clr derleyici seçeneğiyle derlerseniz, derleyici yerel veya yönetilen null işaretçi değerinin belirtilip belirtilmedidiğini nullptr belirleyemez. Amacınızı derleyiciye açıkça belirtmek için komutunu kullanarak nullptr yönetilen bir değer belirtin veya yerel bir değer belirtmek için __nullptr .

nullptr anahtar sözcüğü, Visual Basic'te Nothing ve C# dilinde null ile eşdeğerdir.

Kullanım

Anahtar nullptr sözcük tanıtıcı, yerel işaretçi veya işlev bağımsız değişkeninin kullanabildiği her yerde kullanılabilir.

Anahtar nullptr sözcük bir tür değildir ve aşağıdakilerle kullanılması desteklenmez:

  • sizeof

  • typeid

  • throw nullptr (her ne kadar throw (Object^)nullptr; işe yarasa da)

anahtar nullptr sözcüğü, aşağıdaki işaretçi türlerinin başlatılmasında kullanılabilir:

  • Yerel işaretçi

  • Windows Çalışma Zamanı tutamacı

  • Yönetilen tanıtıcı

  • Yönetilen iç işaretçi

Anahtar nullptr sözcüğü, başvuru kullanılmadan önce işaretçi veya tanıtıcı başvurusunun null olup olmadığını test etmek için kullanılabilir.

Hata denetimi için null işaretçi değerleri kullanan diller arasındaki işlev çağrıları doğru yorumlanmalıdır.

Tanıtıcıyı sıfıra başlatamazsınız; yalnızca nullptr kullanılabilir. 0 sabitinin bir nesne tutamacının atanarak kutulanmış Int32 ve ataması yapılır Object^.

Örnek: nullptr anahtar sözcük

Aşağıdaki kod örneği, anahtar sözcüğün nullptr tanıtıcı, yerel işaretçi veya işlev bağımsız değişkeninin kullanabildiği her yerde kullanılabileceğini gösterir. Örnek, anahtar sözcüğün nullptr kullanılmadan önce başvuruyu denetlemek için kullanılabileceğini gösterir.

// 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: Birbirinin yerine ve sıfır kullanın nullptr

Aşağıdaki kod örneği, ve sıfırın nullptr yerel işaretçilerde birbirinin yerine kullanılabileceğini gösterir.

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

pMyClass == 0

pMyClass == nullptr

pMyClass == 0

Örnek: Tanıtıcı olarak yorumlama nullptr

Aşağıdaki kod örneği, herhangi bir türün nullptr tanıtıcısı veya herhangi bir türün yerel işaretçisi olarak yorumlandığını gösterir. İşlevin farklı türlerde tanıtıcılarla aşırı yüklenmesi durumunda bir belirsizlik hatası oluşturulur. açıkça nullptr bir türe atanmalıdır.

// 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: Atama nullptr

Aşağıdaki kod örneği, atamaya nullptr izin verildiğini gösterir ve değeri içeren nullptr atama türüne bir işaretçi veya tanıtıcı döndürür.

// 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: İşlev parametresi olarak geçirme nullptr

Aşağıdaki kod örneği, işlev nullptr parametresi olarak kullanılabilecek kodu gösterir.

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

int main() {
   f(nullptr);
}
test

Örnek: Varsayılan başlatma

Aşağıdaki kod örneği tanıtıcılar bildirildiğinde ve açıkça başlatılmadığında varsayılan olarak olarak başlatıldığını nullptrgösterir.

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

Örnek: Yerel işaretçiye atama nullptr

Aşağıdaki kod örneği, ile /clrderlendiğinde yerel bir işaretçiye atanabileceğini gösterirnullptr.

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

Gereksinimler

Derleyici seçeneği: (Gerekli değildir; ve /clrdahil olmak üzere /ZW tüm kod oluşturma seçenekleri tarafından desteklenir)

Ayrıca bkz.

.NET ve UWP İçin Bileşen Uzantıları
nullptr