Sobes.tech
Junior

What types of constructors can a class have?

sobes.tech AI

Answer from AI

A class can have the following types of constructors:

  • Default Constructor: Takes no arguments. If not explicitly declared, the compiler may generate one automatically if the class does not contain user-defined constructors and does not inherit from a class with a user-defined constructor.

    class MyClass {
    public:
        MyClass() {
            // Default initialization
        }
    };
    
  • Copy Constructor: Takes a const reference to an object of the same class. Used to create a new object as a copy of an existing one.

    class MyClass {
    public:
        MyClass(const MyClass& other) {
            // Copy data from 'other'
        }
    };
    
  • Move Constructor: Takes an rvalue reference to an object of the same class. Used to create a new object by "moving" resources (e.g., memory ownership) from a temporary object, leaving the temporary in a valid but unspecified state. Introduced in C++11.

    class MyClass {
    public:
        MyClass(MyClass&& other) noexcept {
            // Move resources from 'other'
        }
    };
    
  • Parameterized Constructors: Take one or more arguments to initialize the object.

    class MyClass {
    public:
        MyClass(int value) {
            // Initialization using 'value'
        }
    
        MyClass(int value1, double value2) {
            // Initialization using 'value1' and 'value2'
        }
    };