重複の可能性:
C++ では、仮想基底クラスとは何ですか?
このコードでは、DR のオブジェクトが作成されるときに、文字列 "Hello World" が 4 回出力されるはずですが、代わりに 3 回だけ出力されます。なぜそうなのですか?mid1とmid2が実質的に継承されているためだと思います。 クラスを仮想的に継承するとどうなるか、さらに重要なことにそれが有用な場合とその理由を説明してもらえますか?
#include <iostream>
struct BS
{
BS()
{
std::cout << "Hello World" << std::endl;
}
unsigned int color;
};
struct mid1 : virtual public BS { };
struct mid2 : virtual public BS { };
struct mid3 : public BS { };
struct mid4 : public BS { };
struct DR : public mid1, public mid2,
public mid3, public mid4 { };
int main(int argc, char** argv)
{
DR d;
return 0;
}