C++ Constructors Interview Questions And Answers
Download C++ Constructors Interview Questions and Answers PDF
Prepare comprehensively for your C++ Constructors interview with our extensive list of 51 questions. Our questions cover a wide range of topics in C++ Constructors to ensure you're well-prepared. Whether you're new to the field or have years of experience, these questions are designed to help you succeed. Access the free PDF to get all 51 questions and give yourself the best chance of acing your C++ Constructors interview. This resource is perfect for thorough preparation and confidence building.
51 C++ Constructors Questions and Answers:
C++ Constructors Job Interview Questions Table of Contents:
1 :: What is Virtual destructors?
The explicit destroying of object with the use of delete operator to a base class pointer to the object is performed by the destructor of the base-class is invoked on that object.
The above process can be simplified by declaring a virtual base class destructor.
All the derived class destructors are made virtual in spite of having the same name as the base class destructor. In case the object in the hierarchy is destroyed explicitly by using delete operator to the base class pointer to a derived object, the appropriate destructor will be invoked.
Read MoreThe above process can be simplified by declaring a virtual base class destructor.
All the derived class destructors are made virtual in spite of having the same name as the base class destructor. In case the object in the hierarchy is destroyed explicitly by using delete operator to the base class pointer to a derived object, the appropriate destructor will be invoked.
2 :: What is virtual constructor?
A constructor of a class can not be virtual and if causes a syntax error.
Read More3 :: What is constructor in C++?
Constructors allow initialization of objects at the time of their creation. Constructor function is a special function that is a member of the class and has same name as that of the class. An object’s constructor is automatically called whenever the object is created (statically or dynamically). Constructors are always public. They are used to make initializations at the time of object creation.
Consider following example of a stack class:
#include <iostream>
using namespace std;
class stack
{
int top, bottom;
int data[20];
stack() //constructor function
{
top = bottom;
cout <<”Inside Stack Constructor: Stack
initialized”;
}
int stackfull()
{
return ((top == max – 1)?1:0);
}
int stackempty()
{
return (top == bottom)?1:0);
}
void push(int no)
{
if(stackfull())
cout<<”Stack is full”;
else
data[++top] = no;
}
int pop()
{
if(stackempty())
cout<<”Nothing to pop.. Stack is Empty!”;
else
return(data[top--];
}
};
int main()
{
int i, no;
stack st; //object is created; hence constructor is
invoked- stack initialization done
cout <<” Entered Main\n”;
for(i = 0; i < 10; i++)
st.push(i);
no = s.pop();
cout <<”The popped element is:”<
return 0;
}
The o/p of the program would be:
Entered Main
Inside Stack Constructor: Stack initialized
The popped element is: 9
As seen above, the stack object is initialized automatically at the time of creation by the constructor. So we don’t need to write and invoke initialization functions explicitly.
Read MoreConsider following example of a stack class:
#include <iostream>
using namespace std;
class stack
{
int top, bottom;
int data[20];
stack() //constructor function
{
top = bottom;
cout <<”Inside Stack Constructor: Stack
initialized”;
}
int stackfull()
{
return ((top == max – 1)?1:0);
}
int stackempty()
{
return (top == bottom)?1:0);
}
void push(int no)
{
if(stackfull())
cout<<”Stack is full”;
else
data[++top] = no;
}
int pop()
{
if(stackempty())
cout<<”Nothing to pop.. Stack is Empty!”;
else
return(data[top--];
}
};
int main()
{
int i, no;
stack st; //object is created; hence constructor is
invoked- stack initialization done
cout <<” Entered Main\n”;
for(i = 0; i < 10; i++)
st.push(i);
no = s.pop();
cout <<”The popped element is:”<
return 0;
}
The o/p of the program would be:
Entered Main
Inside Stack Constructor: Stack initialized
The popped element is: 9
As seen above, the stack object is initialized automatically at the time of creation by the constructor. So we don’t need to write and invoke initialization functions explicitly.
4 :: Can you please explain Explain constructors and destructors?
Constructors are the member functions of the class that executes automatically whenever an object is created. Constructors have the same name as the class. Constructors initialize the class. Constructors can’t have return type. Destructors are called when the objects are destroyed.
Destructors are usually used to deallocate memory and do other cleanup for a class object and its class members when the object is destroyed. A destructor is called for a class object when that object passes out of scope or is explicitly deleted. A destructor takes no arguments and has no return type.
Read MoreDestructors are usually used to deallocate memory and do other cleanup for a class object and its class members when the object is destroyed. A destructor is called for a class object when that object passes out of scope or is explicitly deleted. A destructor takes no arguments and has no return type.
5 :: Tell me how should a constructor handle a failure?
Throw an exception
Constructors don't have a return type, so it's not possible to use return codes. The best way to signal constructor failure is therefore to throw an exception.
Read MoreConstructors don't have a return type, so it's not possible to use return codes. The best way to signal constructor failure is therefore to throw an exception.
6 :: Do you know what are destructors?
Destructors are complements of constructors. When an object is destroyed, its destructor is automatically called. Destructors are mainly useful for doing the clean up job. E.g. an object may have allocated some memory during its lifetime; destructors are the place where this memory is deallocated. Or an object may need to close some files by releasing its handles which it had previously obtained.
Destructor function has same name as that of a constructor; but the name is preceded by a tilde (‘~’) sign.
We will expand the above example of a stack class to include a destructor:
#include <iostream>
using namespace std;
class stack
{
int top, bottom;
int data[20];
stack() //constructor function
{
top = bottom;
cout <<”Inside Stack Constructor: Stack initialized\n”;
}
int stackfull()
{
return ((top == max – 1)?1:0);
}
int stackempty()
{
return (top == bottom)?1:0);
}
void push(int no)
{
if(stackfull())
cout<<”Stack is full”;
else
data[++top] = no;
}
int pop()
{
if(stackempty())
cout<<”Nothing to pop.. Stack is Empty!\n”;
else
return(data[top- -];
}
~stack() //destructor function
{
cout <<”Inside Stack Destructor: Stack Destroyed\n”;
}
};
int main()
{
int i, no;
stack st; //object is created; hence constructor is invoked- stack initialization done
cout <<”Entered Main\n”;
for(i = 0; i < 10; i++)
st.push(i);
no = s.pop();
cout <<”The popped element is:”<<no << “\n”;
return 0;
}// at the end of object’s lifetime, destructor is invoked
The o/p of the program would be:
Entered Main
Inside Stack Constructor: Stack initialized
The popped element is: 9
Inside Stack Destructor: Stack Destroyed
As seen from the o/p the constructors and destructors are automatically called.
Read MoreDestructor function has same name as that of a constructor; but the name is preceded by a tilde (‘~’) sign.
We will expand the above example of a stack class to include a destructor:
#include <iostream>
using namespace std;
class stack
{
int top, bottom;
int data[20];
stack() //constructor function
{
top = bottom;
cout <<”Inside Stack Constructor: Stack initialized\n”;
}
int stackfull()
{
return ((top == max – 1)?1:0);
}
int stackempty()
{
return (top == bottom)?1:0);
}
void push(int no)
{
if(stackfull())
cout<<”Stack is full”;
else
data[++top] = no;
}
int pop()
{
if(stackempty())
cout<<”Nothing to pop.. Stack is Empty!\n”;
else
return(data[top- -];
}
~stack() //destructor function
{
cout <<”Inside Stack Destructor: Stack Destroyed\n”;
}
};
int main()
{
int i, no;
stack st; //object is created; hence constructor is invoked- stack initialization done
cout <<”Entered Main\n”;
for(i = 0; i < 10; i++)
st.push(i);
no = s.pop();
cout <<”The popped element is:”<<no << “\n”;
return 0;
}// at the end of object’s lifetime, destructor is invoked
The o/p of the program would be:
Entered Main
Inside Stack Constructor: Stack initialized
The popped element is: 9
Inside Stack Destructor: Stack Destroyed
As seen from the o/p the constructors and destructors are automatically called.
7 :: What is virtual destructor and how to use it?
If the destructor in the base class is not made virtual, then an object that might have been declared of type base class and instance of child class would simply call the base class destructor without calling the derived class destructor.
Hence, by making the destructor in the base class virtual, we ensure that the derived class destructor gets called before the base class destructor.
class a
{
public:
a(){printf("\nBase Constructor\n");}
~a(){printf("\nBase Destructor\n");}
};
class b : public a
{
public:
b(){printf("\nDerived Constructor\n");}
~b(){printf("\nDerived Destructor\n");}
};
int main()
{
a* obj=new b;
delete obj;
return 0;
}
Output:
Base Constructor
Derived Constructor
Base Destructor
By Changing
~a(){printf("\nBase Destructor\n");}
to
virtual ~a(){printf("\nBase Destructor\n");}
Output:
Base Constructor
Derived Constructor
Derived Destructor
Base Destructor
Read MoreHence, by making the destructor in the base class virtual, we ensure that the derived class destructor gets called before the base class destructor.
class a
{
public:
a(){printf("\nBase Constructor\n");}
~a(){printf("\nBase Destructor\n");}
};
class b : public a
{
public:
b(){printf("\nDerived Constructor\n");}
~b(){printf("\nDerived Destructor\n");}
};
int main()
{
a* obj=new b;
delete obj;
return 0;
}
Output:
Base Constructor
Derived Constructor
Base Destructor
By Changing
~a(){printf("\nBase Destructor\n");}
to
virtual ~a(){printf("\nBase Destructor\n");}
Output:
Base Constructor
Derived Constructor
Derived Destructor
Base Destructor
8 :: Can you please explain the difference between copy constructor and an assignment operator?
A copy constructor is used to declare and initialize an object from another object.
E.g: integer I2(I1);
An assignment operator doesnot invoke the copy constructor. It simply assigns the values of an object to another, member by member.
Read MoreE.g: integer I2(I1);
An assignment operator doesnot invoke the copy constructor. It simply assigns the values of an object to another, member by member.
9 :: What is shallow?
A shallow copy just copies the values of the data as they are. Even if there is a pointer that points to dynamically allocated memory, the pointer in the copy will point to the same dynamically allocated object.
Read More10 :: What is deep copy?
A deep copy creates a copy of the dynamically allocated objects too. You would need to use a copy constructor and overload an assignment operator for this.
Read More11 :: Tell me what are the restrictions apply to constructors and destructors?
The following restrictions apply to constructors and destructors
Constructors and destructors don't return values.
The addresses of constructors and destructors can't be taken so we can't use references and pointers on them.
Constructors cannot be declared with the keyword virtual.
Constructors and destructors cannot be declared static, const, or volatile.
Read MoreConstructors and destructors don't return values.
The addresses of constructors and destructors can't be taken so we can't use references and pointers on them.
Constructors cannot be declared with the keyword virtual.
Constructors and destructors cannot be declared static, const, or volatile.
12 :: Can you please explain the order in which constructors are called when an object of a derived class is created?
The constructors of any virtual base classes are called first in the order of inheritance.
Non-virtual base class constructors are called next.
The derived class constructor is called last.
Read MoreNon-virtual base class constructors are called next.
The derived class constructor is called last.
13 :: Which of the following gets called when an object is being created?
A. constructor
B. virtual function
C. destructor
D. main
Option A
constructor
Read Moreconstructor
14 :: To ensure that every object in the array receives a destructor call, always delete memory allocated as an array with operator __________ .
A. destructor
B. delete
C. delete[]
D. kill[]
E. free[]
Option C
delete[]
Read Moredelete[]
15 :: Which of the following statement is correct about constructors?
A. A constructor has a return type.
B. A constructor cannot contain a function call.
C. A constructor has no return type.
D. A constructor has a void return type.
Option C
A constructor has no return type.
Read MoreA constructor has no return type.
16 :: Which of the following statement is correct whenever an object goes out of scope?
A. The default constructor of the object is called.
B. The parameterized destructor is called.
C. The default destructor of the object is called.
D. None of the above.
Option C
The default destructor of the object is called.
Read MoreThe default destructor of the object is called.
17 :: A constructor that accepts __________ parameters is called the default constructor.
A. one
B. two
C. no
D. three
Option C
no
Read Moreno
18 :: What happens when a class with parameterized constructors and having no default constructor is used in a program and we create an object that needs a zero-argument constructor?
A. Compile-time error.
B. Preprocessing error.
C. Runtime error.
D. Runtime exception.
Option A
Compile-time error.
Read MoreCompile-time error.
20 :: Destructor has the same name as the constructor and it is preceded by ______ .
A. !
B. ?
C. ~
D. $
Option C
( ~ )
Read More( ~ )
21 :: For automatic objects, constructors and destructors are called each time the objects
A. enter and leave scope
B. inherit parent class
C. are constructed
D. are destroyed
Option A
enter and leave scope
Read Moreenter and leave scope
22 :: A class's __________ is called when an object is destroyed.
A. constructor
B. destructor
C. assignment function
D. copy constructor
Option B
destructor
Read Moredestructor
23 :: Destructors __________ for automatic objects if the program terminates with a call to function exit or function abort.
A. are called
B. are inherited
C. are not called
D. are created
Option C
are not called
Read Moreare not called
24 :: Which of the following statement is correct?
A. A constructor of a derived class can access any public and protected member of the base class.
B. Constructor cannot be inherited but the derived class can call them.
C. A constructor of a derived class cannot access any public and protected member of the base class.
D. Both A and B.
Option D
Both A and B.
Read MoreBoth A and B.
25 :: Which of the following statements are correct?
A. Constructor is always called explicitly.
B. Constructor is called either implicitly or explicitly, whereas destructor is always called implicitly.
C. Destructor is always called explicitly.
D. Constructor and destructor functions are not called at all as they are always inline.
Option B
Constructor is called either implicitly or explicitly, whereas destructor is always called implicitly.
Read MoreConstructor is called either implicitly or explicitly, whereas destructor is always called implicitly.