SORU
3 EKİM 2014, Cuma


Bu C yıkıcı gereksiz mi?

Çeşitli yapıları bu şekilde tanımlanmış olan bazı C kodu aldım:

typedef struct _someStruct_ {
   std::string someString; 
   std::vector<std::string> someVectorOfStrings;
   int  someOtherStuff;

   ~_someStruct_()
   {
      someString.clear();
      someVectorOfStrings.clear(); 
   }
} someStruct; 

Yıkıcı burada eğer yapısı varsayılan yıkıcı tarafından tahrip edilmesi gerekiyorsa tamamen yedekli, herhangi bir dize, vb. vektörler olmaz. zaten zarar görmüş olabilir mi?

Eğer kod yazmıştım, açık bir yıkıcı burada sadece derleyici devam edelim istiyorum ekleyerek hiç düşünmemiştim.

Anladığım kadarıyla bu, sadece zaman ihtiyacın olabilir kendi oluşturmak için yıkıcı bir yapı ise herhangi bir üyelerinin yapıları içeren işaretçiler veri gerekebilir temizlik, ya da bazı ekstra işlevsellik (örneğin, hata ayıklama, giriş yaparken bir yapı alır silinmiş) gereklidir.

Burada bir şey eksik - dizeleri ve vektörler açıkça yıkıcı temizlenmiş olması için hiç bir sebep ben miyim? Benim şüphe bu gerçekten bir C programcı bana yollayan kişi (cf. C Bazı C kodu açmaya çalıştım olan typedef).

CEVAP
3 EKİM 2014, Cuma


Aslında, budaha kötüdaha basitçe örtülü yıkıcı kullanarak.

Açık yıkıcı alarak, derleyici örtülü bir hareket için kurucu sağlamaz!

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • jesiel santos

    jesiel santo

    15 Ocak 2009
  • OVERWERK

    OVERWERK

    6 Temmuz 2010
  • William Sledd

    William Sled

    24 EYLÜL 2006