Aracılığıyla paylaş


Yıkıcılar (C++)

"Yıkıcı" yapıcı işlevleri tersini işlevlerdir.Nesneler yok olduğunda (deallocated) denir.Sınıf adının önüne bir tilda koyarak sınıf yıkıcı bir işlev atamak (~).Örneğin, yıkıcı sınıf için String bildirilir: ~String().

/Clr derleme yıkıcı serbest yönetilen ve yönetilmeyen kaynakları özel bir rolü vardır.Daha fazla bilgi için bkz. Yıkıcı ve Visual C++ Finalizers.

Örnek

Nesne artık gerekli olmadığında yıkıcı "temizlemek" için yaygın olarak kullanılır.Aşağıdaki bildiriyi, düşünün bir String sınıfı:

// spec1_destructors.cpp
#include <string.h>

class String {
public:
   String( char *ch );  // Declare constructor
   ~String();           //  and destructor.
private:
   char    *_text;
   size_t  sizeOfText;
};

// Define the constructor.
String::String( char *ch ) {
   sizeOfText = strlen( ch ) + 1;

   // Dynamically allocate the correct amount of memory.
   _text = new char[ sizeOfText ];

   // If the allocation succeeds, copy the initialization string.
   if( _text )
      strcpy_s( _text, sizeOfText, ch );
}

// Define the destructor.
String::~String() {
   // Deallocate the memory that was previously reserved
   //  for this string.
   if (_text)
      delete[] _text;
}

int main() {
   String str("The piper in the glen...");
}

Önceki örnekte, yıkıcı String::~String kullanan delete işleci dinamik metin depolama için ayrılan alanı ayırması kaldırılacak.

Ayrıca bkz.

Başvuru

Özel üye işlevler (C++)