Artık birçok yeni özelliğe sahip C ++ 11 var. İlginç ve kafa karıştırıcı biri (en azından benim için) yenidir nullptr
.
Kötü makroya artık gerek yok NULL
.
int* x = nullptr;
myclass* obj = nullptr;
Yine de, nasıl nullptr
çalıştığını anlamıyorum . Örneğin, Wikipedia makalesinde şunlar yazılıdır:
C ++ 11 , ayırt edici bir boş işaretçi sabiti olarak hizmet etmek için yeni bir anahtar kelime ekleyerek bunu düzeltir: nullptr. Bu ait tipi nullptr_t herhangi bir işaretçi türü veya işaretçi-üyesinin türüne örtük olarak dönüştürülebilir ve karşılaştırılabilir. Bool dışında dolaylı olarak dönüştürülebilir veya integral tiplerle karşılaştırılamaz.
Anahtar kelime ve türün bir örneği nasıl?
Ayrıca, nullptr
iyi eskiye göre daha üstün olan başka bir örneğiniz var mı (Wikipedia'nın yanında) 0
?
nullptr_t
, yalnızca bir kişide görülmesi garantili nullptr
? Yani, bir işlev döndürülürse nullptr_t
, derleyici işlevin gövdesine bakılmaksızın hangi değerin döndürüleceğini zaten biliyordur?
std::nullptr_t
somutlaştırılabilir, ancak nullptr
tür olarak tanımlandığından tüm örnekler aynı olacaktır typedef decltype(nullptr) nullptr_t
. Tipin var olmasının birincil nedeninin, işlevlerin nullptr
gerekirse yakalamak için özellikle aşırı yüklenebilmesi olduğuna inanıyorum . Bir örnek için buraya bakın .
nullptr
C ++ / CLI'da yönetilen tanıtıcılar için null referansı temsil etmek için de kullanılır.