Giriş
C++ derleyicisi sınıflar için, programcı tarafından sağlanmayan bazı metodları kendi kendine doldurur. Bu metodlar şöyledir.
1. Default Constructor
Default Constructor yazısına taşıdım.
2. Copy Consructor
Copy Constructor yazısına taşıdım.
3. Copy Asssignment Operator
Copy Assignment Operator yazısına taşıdım.
4. Move Constructor
Move Constructor yazısına taşıdım.
5. Move Assignment
Eğer move constructor varsa, bu metod derleyici tarafından üretilmez.
6. Destructor
Destructor yazısına taşıdım.
C++ derleyicisi sınıflar için, programcı tarafından sağlanmayan bazı metodları kendi kendine doldurur. Bu metodlar şöyledir.
Şöyle bir sınıf kodlarsak
- the default constructor - implicitly declared if there is no user-declared constructor
- the copy constructor - implicitly declared if not user-declared
- the copy assignment operator - implicitly declared if not user-declared
- the move constructor - implicitly declared only if no copy/move ctor/assignment operator or destructor is user-declared
- the move assignment operator - implicitly declared only if no copy/move ctor/assignment operator or destructor is user-declared
- the destructor - implicitly declared if not user-declared
class Empty{};
Derleyici bizim için şöyle bir kod üretir.class Empty {
public:
Empty() { ... }
Empty(const Empty& rhs) { ... }
~Empty() { ... }
Empty& operator=(const Empty& rhs) { ... } // copy assignment operator
};
Şimdi bu metodların ne zaman üretilip ne zaman üretilmeyeceğine bakalım. Şeklen şöyle.1. Default Constructor
Default Constructor yazısına taşıdım.
2. Copy Consructor
Copy Constructor yazısına taşıdım.
3. Copy Asssignment Operator
Copy Assignment Operator yazısına taşıdım.
4. Move Constructor
Move Constructor yazısına taşıdım.
5. Move Assignment
Eğer move constructor varsa, bu metod derleyici tarafından üretilmez.
6. Destructor
Destructor yazısına taşıdım.
Hiç yorum yok:
Yorum Gönder