C ++中的继承和预期行为

问题描述 投票:0回答:1

我正在处理一个涉及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对象,但我不确定。

c++ inheritance
1个回答
0
投票

它将像D对象一样。

就像单继承一样,它的行为就像创建的类(不是指向它的指针)。

© www.soinside.com 2019 - 2024. All rights reserved.