You've answered 0 of 114 questions correctly. (Clear)

Question #133 Difficulty: 2

According to the C++17 standard, what is the output of this program?

    #include <iostream>
using namespace std;

class A
    A() { cout << "A"; }
    A(const A &) { cout << "a"; }

class B: public virtual A
    B() { cout << "B"; }
    B(const B &) { cout<< "b"; }

class C: public virtual A
    C() { cout<< "C"; }
    C(const C &) { cout << "c"; }

class D:B,C
    D() { cout<< "D"; }
    D(const D &) { cout << "d"; }

int main()
    D d1;
    D d2(d1);


Virtual inheritance is a technique used to avoid multiple copies of the same indirect base class in an object.

The call order of base constructors is well defined.


Problems? View a hint or try another question.

I give up, show me the answer (make 3 more attempts first).

Mode : Training

You are currently in training mode, answering random questions. Why not Start a new quiz? Then you can boast about your score, and invite your friends.


Create your own!

Android app

Get Sergey Vasilchenko's CppQuiz Android app.