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 nullptr
sahip 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:
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ı nullptr
gö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 /clr
derlendiğ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 /clr
dahil olmak üzere /ZW
tüm kod oluşturma seçenekleri tarafından desteklenir)