Sıfır Kuralı

Boş bir sınıf tanımlamadığımızda, derleyici arka planda, inline ve public olan

  • default ctor
  • copy ctor
  • dtor
  • operator=

fonksiyonlarını tanımlar.

Bu fonksiyonlar ihtiyaç olduğunda oluşturulur, mesela:

class CellPhone {};

aslında,

class CellPhone
{
public:
	CellPhone() = default;
	CellPhone(const CellPhone& ) = default;
	CellPhone& operator= (const CellPhone& ) { return *this; }
	~CellPhone() = default;
};

şeklinde üretilir.

CellPhone nokia; // sırasıyla, default ctor'ı, ardından dtor'ı çağırır

CellPhone tmp(nokia); // copy ctor'ı çağırır

tmp = nokia; // operator= çağırır

Sıfır kuralı eğer sınıf içinde dinamik olarak(heap kullanılarak) tanımlayacağımız bir yapı yok ise, ctor, dtor ve RAII’yi uygulayan yapılara karışmamamız, bunların derleyici tarafından halledileceğini söyler.


RAII

100 Words

2018-05-18 03:00 +0300