ACtE03 · Chapter 3Programming & Applications🏛️ Past Licensure QuestionID: c42b508d
What is the output of the following C++ program?
C++#include <iostream>
using namespace std;
class Base1 {
public:
Base1() { cout << "Base 1"; }
};
class Base2 {
public:
Base2() { cout << "Base 2"; }
};
class Derived : public Base1, public Base2 {
public:
Derived() { cout << "Derived"; }
};
int main() {
Derived obj;
return 0;
}
What is the output of the following C++ program?
C++
#include <iostream>
using namespace std;
class Base1 {
public:
Base1() { cout << "Base 1"; }
};
class Base2 {
public:
Base2() { cout << "Base 2"; }
};
class Derived : public Base1, public Base2 {
public:
Derived() { cout << "Derived"; }
};
int main() {
Derived obj;
return 0;
}Multiple Choice Options
- A✓ Correct Option
Base 1Base 2Derived
- B
Base 2Base 1Derived
- C
DerivedBase 1Base 2
- D
Base 1DerivedBase 2
Detailed Technical Solution & Explanation
In multiple inheritance in C++, base constructors execute in the exact order they are listed in the class derivation list (public Base1, public Base2). Thus, Base1 constructor runs first ("Base 1"), then Base2 constructor runs ("Base 2"), and finally the Derived constructor body runs ("Derived"), producing: Base 1Base 2Derived.
Option Analysis:
•
Option A (Base 1Base 2Derived): Correct. Matches the sequential execution order
Base1 -> Base2 -> Derived.•
Option B (Base 2Base 1Derived): Inverted base constructor order.
•
Option C (DerivedBase 1Base 2): Derived constructor runs after base constructors, not before.
•
Option D (Base 1DerivedBase 2): Interleaved execution does not occur.
Reference: Demo2 · Set 2NEC Licensure Syllabus