I don't have depth knowledge of C++, however I know the basics of C++. C++ supports three types of constructors named as default constructor, parameterized constructor and copy constructor.
Default constructor does not take any input from user while creating and initializing an object.
Example: A() { a = 10;l b = 20} where a and b are data members of the class A.
Parameterized constructor takes input from the user to create and initialize the object.
Example: A(int x, int y) { a = x; b = y} where a and b are data members of the class A and initialized with the values (x and y) that user passed.
Copy constructor is a special type of constructor while uses another object to create and initialize the object.
Example: A(A & object) { a = object.a; b = object.b} where a and b are data members and those are initialized from object of same class type.
One more thing, parameterized constructor can have default arguments. I meant to say that if user does not pass a particular input parameter constructor definition would consider the default value for that parameter.