相关疑难解决方法(0)

在C++中,什么是虚拟基类?

我想知道" 虚拟基类 "是什么以及它意味着什么.

让我举个例子:

class Foo
{
public:
    void DoSomething() { /* ... */ }
};

class Bar : public virtual Foo
{
public:
    void DoSpecific() { /* ... */ }
};
Run Code Online (Sandbox Code Playgroud)

c++ virtual-inheritance

389
推荐指数
6
解决办法
30万
查看次数

C++继承,是否只​​能拥有共享祖父级类的1个副本

我有一个项目,其中包含一些非常小的类,这些类充当了较大类的最小接口.有时我的对象需要几个这样的接口.有时这些接口共享相同的派生基类.无论如何,我可以构造我的代码,以便我只有一个所有接口共享的派生基类的副本?

这是一个代码示例:

class A {
public:
  virtual void f(int a)=0;
  virtual int g() const {
    return m_inner;
  }
protected:
  int m_inner;
};

class B : public A {
public:
  virtual void f(int a)=0;
  virtual void h(int b) {
    m_stuff = b;
    m_inner = 0;
  }
protected:
  int m_stuff;
};

class C : public A {
public:
  virtual void f(int a)=0;
  virtual int i() const {
    return m_otherstuff;
  }
protected:
  int m_otherstuff;
};

class D : public B, public C { …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance class multiple-inheritance

2
推荐指数
1
解决办法
151
查看次数

1
推荐指数
1
解决办法
3369
查看次数