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

  • bigky226

    bigky226

    11 HAZİRAN 2006
  • BiGSH0TROB

    BiGSH0TROB

    7 NİSAN 2011
  • Pepsi

    Pepsi

    1 Kasım 2005