In object-oriented programming, a constructor is a special member function that is called when an object is created. It is used to initialize the object’s data members and perform any other necessary setup. In C++, constructors have the same name as the class they belong to and are declared with the constructorName()
syntax.
Default Constructor
If a class does not have any constructors defined, the compiler automatically generates a default constructor. This constructor takes no parameters and does nothing. It is equivalent to the following code:
class MyClass {
public:
MyClass() {}
};
C++Parameterized Constructor
A parameterized constructor is a constructor that takes one or more parameters. It is used to initialize the object’s data members with specific values. The following code shows an example of a parameterized constructor that takes two integer parameters:
class MyClass {
public:
MyClass(int a, int b) {
this->a = a;
this->b = b;
}
private:
int a;
int b;
};
C++Copy Constructor
A copy constructor is a constructor that creates a new object as a copy of an existing object. It is called when an object is created using the assignment operator or when an object is passed by value to a function. The following code shows an example of a copy constructor:
class MyClass {
public:
MyClass(const MyClass& other) {
this->a = other.a;
this->b = other.b;
}
private:
int a;
int b;
};
C++The const
keyword before the parameter other
indicates that the copy constructor does not modify the original object.
Constructor Overloading
Like other functions in C++, constructors can be overloaded. This means that you can define multiple constructors for a class with different parameter lists. The following code shows an example of constructor overloading:
class MyClass {
public:
MyClass() {}
MyClass(int a) {
this->a = a;
}
MyClass(int a, int b) {
this->a = a;
this->b = b;
}
private:
int a;
int b;
};
C++Explicit Constructor
By default, C++ allows implicit conversions from a type to its corresponding class type. For example, if a class MyClass
has a constructor that takes an integer parameter, the following code is legal:
MyClass obj = 42;
C++To prevent this kind of implicit conversion, you can use the explicit
keyword before the constructor declaration:
class MyClass {
public:
explicit MyClass(int a) {
this->a = a;
}
private:
int a;
};
C++With this code, the following code is illegal:
MyClass obj = 42; // compile error
MyClass obj(42); // OK
C++Conclusion
Constructors are an important part of C++ classes. They are used to initialize objects and provide a way to customize the initialization process. With the different types of constructors available in C++, you can create objects in a variety of ways to suit your needs.