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

  • aki6336

    aki6336

    14 AĞUSTOS 2008
  • BumbleDroid

    BumbleDroid

    18 EKİM 2010
  • TecnoTutosPC

    TecnoTutosPC

    19 Kasım 2012