请分析以下 C++ 代码,并选出程序运行后的正确输出。
#include <iostream>
class Base {
public:
Base(int i) {
std::cout << i;
}
};
class Base1 : virtual public Base {
public:
Base1(int i, int j = 0) : Base(j) {
std::cout << i;
}
};
class Base2 : virtual public Base {
public:
Base2(int i, int j = 0) : Base(j) {
std::cout << i;
}
};
class MM : public Base2, public Base1 {
public:
MM(int a, int b, int c, int d)
: Base(a), Base2(d), Base1(c), mem2(b), mem1(a) {
std::cout << b;
}
private:
Base2 mem2;
Base1 mem1;
};
int main() {
MM objD(1, 2, 3, 4);
return 0;
} 当创建对象 `MM objD(1, 2, 3, 4)` 时,程序的输出是什么?