0
0
C++programming~20 mins

Constructor calling order in C++ - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
πŸŽ–οΈ
Constructor Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Constructor calling order in single inheritance
What is the output of this C++ program showing constructor calls in single inheritance?
C++
#include <iostream>
using namespace std;

class Base {
public:
    Base() { cout << "Base constructor\n"; }
};

class Derived : public Base {
public:
    Derived() { cout << "Derived constructor\n"; }
};

int main() {
    Derived d;
    return 0;
}
A
Derived constructor
B
Derived constructor
Base constructor
C
Base constructor
D
Base constructor
Derived constructor
Attempts:
2 left
πŸ’‘ Hint
Remember base class constructors run before derived class constructors.
❓ Predict Output
intermediate
2:00remaining
Constructor calling order in multiple inheritance
What is the output of this C++ program demonstrating constructor calls in multiple inheritance?
C++
#include <iostream>
using namespace std;

class A {
public:
    A() { cout << "A constructor\n"; }
};

class B {
public:
    B() { cout << "B constructor\n"; }
};

class C : public A, public B {
public:
    C() { cout << "C constructor\n"; }
};

int main() {
    C c;
    return 0;
}
A
C constructor
A constructor
B constructor
B
B constructor
A constructor
C constructor
C
A constructor
B constructor
C constructor
D
A constructor
C constructor
B constructor
Attempts:
2 left
πŸ’‘ Hint
Base classes are constructed in the order they are declared in the class header.
❓ Predict Output
advanced
2:00remaining
Constructor calling order with virtual inheritance
What is the output of this C++ program illustrating constructor calls with virtual inheritance?
C++
#include <iostream>
using namespace std;

class Base {
public:
    Base() { cout << "Base constructor\n"; }
};

class A : virtual public Base {
public:
    A() { cout << "A constructor\n"; }
};

class B : virtual public Base {
public:
    B() { cout << "B constructor\n"; }
};

class Derived : public A, public B {
public:
    Derived() { cout << "Derived constructor\n"; }
};

int main() {
    Derived d;
    return 0;
}
A
Base constructor
A constructor
B constructor
Derived constructor
B
A constructor
B constructor
Base constructor
Derived constructor
C
Base constructor
B constructor
A constructor
Derived constructor
D
A constructor
Base constructor
B constructor
Derived constructor
Attempts:
2 left
πŸ’‘ Hint
Virtual base class constructors are called before any derived class constructors.
❓ Predict Output
advanced
2:00remaining
Constructor calling order with member objects
What is the output of this C++ program showing constructor calls including member objects?
C++
#include <iostream>
using namespace std;

class Member {
public:
    Member() { cout << "Member constructor\n"; }
};

class Container {
    Member m;
public:
    Container() { cout << "Container constructor\n"; }
};

int main() {
    Container c;
    return 0;
}
A
Member constructor
Container constructor
B
Container constructor
Member constructor
C
Member constructor
D
Container constructor
Attempts:
2 left
πŸ’‘ Hint
Member objects are constructed before the container class constructor body runs.
🧠 Conceptual
expert
3:00remaining
Order of constructor calls in complex inheritance
Given this class hierarchy with virtual and non-virtual inheritance, which sequence correctly shows the constructor call order when creating an object of class D?
C++
class A { public: A() { cout << "A"; } };
class B : virtual public A { public: B() { cout << "B"; } };
class C : virtual public A { public: C() { cout << "C"; } };
class D : public B, public C { public: D() { cout << "D"; } };
AB A C D
BA B C D
CA C B D
DB C A D
Attempts:
2 left
πŸ’‘ Hint
Virtual base class A is constructed once before B and C.