Posts

Showing posts with the label constructors

Copyable and non-copyable Objects in C++

In C++, objects can be categorized as either copyable or non-copyable based on whether they can be copied or assigned using the copy constructor and copy assignment operator. The copyability of an object is determined by the presence or absence of these copy operations. Copyable Objects: Copyable objects can be copied and assigned using the copy constructor and copy assignment operator. By default, user-defined types in C++ are copyable unless specific measures are taken to disable or restrict copying. When an object is copied, a new object is created with the same state as the original object. Example of a copyable class: class Copyable { public: Copyable() {} Copyable(const Copyable& other) {} Copyable& operator=(const Copyable& other) { return *this; } }; Non-Copyable Objects: Non-copyable objects cannot be copied or assigned using the copy constructor and copy assignment operator. This is often intentional when dealing with resources that should not b...

C++11 What is Delegating Constructors?

Delegating constructors are a feature introduced in C++11 that allows one constructor of a class to call another constructor of the same class to initialize the object. This feature simplifies code and eliminates the need to repeat the same code multiple times for different constructors. A delegating constructor has the same syntax as a regular constructor, but it calls another constructor of the same class in its member initializer list using the this keyword. Here's an example: class MyClass { public: MyClass(int x, int y) : x_(x), y_(y) {} MyClass(int x) : MyClass(x, 0) {} // delegating constructor private: int x_;  int y_; }; In this example, the MyClass has two constructors: one that takes two int parameters and one that takes one int parameter. The second constructor is a delegating constructor because it calls the first constructor using this . The x parameter is passed to the first constructor, and the y parameter is set to zero. Delegating constructors...