我正在处理一个涉及4个类和钻石继承的任务。我的所有答案均基于可能正确或不正确的假设。
菱形层次结构是这样的:
A
/ \
B C
\ /
D
代码看起来像这样:
class A
{
private:
string s;
public:
A(string s);
virtual ~A;
virtual void set(string s);
virtual string get();
};
class B : public virtual A
{
public:
void set(string s);
string get();
}
class C : public virtual A
{
public:
void set(string s);
}
class D : public B, public C
{
public:
void set(string s);
}
假设我有一个看起来像这样的指针:C *obj = new D();
obj的预期行为是否像C或D对象?我以为它的行为就像一个C对象,实际上是一个D对象,但我不确定。
它将像D
对象一样。
就像单继承一样,它的行为就像创建的类(不是指向它的指针)。