SORU
11 Aralık 2012, Salı


Nullptr kullanmanın avantajları nelerdir?

Bu kod parçasıkavramsal olaraküç işaretçiler (pointer güvenli başlatma) için aynı şeyi yapar:

int* p1 = nullptr;
int* p2 = NULL;
int* p3 = 0;

Ve onlara değerleri NULL 0 atama nullptr atama işaretçiler avantajları nelerdir?

CEVAP
11 Aralık 2012, Salı


Bu kod, bir avantaj gibi görünmüyor. Ama bu aşırı işlevleri:

void f(char const *ptr);
void f(int v);

f(NULL);  //which function will be called?

Hangi işlev çağrılır? Tabii ki, burada niyet f(int) adı verilecek gerçeklik! 10 ** ama çağrı! Bu büyük bir sorun1değil mi?

Bu yüzden, bu tür sorunların çözümü nullptr kullanmak için:

f(nullptr); //first function is called

Tabii ki, o nullptr sadece avantaj değil. Burada başka bir şeydir:

template<typename T, T *ptr>
struct something{};                     //primary template

template<>
struct something<nullptr_t, nullptr>{};  //partial specialization for nullptr

Şablon, nullptr tipi nullptr_t, birebir yana yazabilirsiniz:

template<typename T>
void f(T *ptr);   //function to handle non-nullptr argument

void f(nullptr_t); //an overload to handle nullptr argument!!!

1. C NULL temelde bu yüzden #define NULL 0 şeklinde tanımlanır f(int) denir neden olduğunu int,.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Cole Rolland

    Cole Rolland

    23 Kasım 2008
  • placeboing

    placeboing

    7 Mart 2006
  • RocketJump

    RocketJump

    22 ŞUBAT 2006