Why does Down
not invoke the Base
ctor through Left
& Right
twice?
class Base {
public:
Base() { cout << "base-ctor" << endl; }
Base(string a) { cout << a << endl; }
};
class Left : virtual public Base {
public:
Left(string a) : Base(a) {}
};
class Right : virtual public Base {
public:
Right(string a) : Base(a) {}
};
class Down : public Left, public Right {
public:
Down(string a) : Left(a), Right(a) {}
};
int main() {
Down x("down");
// -> base-ctor
}