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

  • Hollyscoop

    Hollyscoop

    30 Ocak 2007
  • jkimisyellow...ish

    jkimisyellow

    8 Temmuz 2009
  • JTechTalk

    JTechTalk

    11 Temmuz 2010