在像下面这样的“经典”菱形问题中(virtual前面public D、后面class C和没有没有class B),可以使用名称范围运算符来解决歧义::,例如在 class 的构造函数中A:
/*
* D D D
* / \ which without 'virtual' | |
* B C is actually: B C
* \ / \ /
* A A
*/
#include <iostream>
using namespace std;
class D { public: char d = 'D';};
class C : public D { public: char c = 'C';};
class B : public D { public: char b …Run Code Online (Sandbox Code Playgroud)