繁体   English   中英

两个具有相同纯虚函数的基类

[英]Two base classes with the same pure virtual function

我有一个继承自B类的A类。所以A类的接口包含一些B类的纯虚函数和A类的一些函数。现在我需要为A类进行单元测试,所以想要一些接口我可以嘲笑的A级。 所以现在我想知道给定的代码在C ++ 14中是否正确并且它是否可以导致UB:

class Base1 {
public:
  virtual void func() = 0;
};

class Base2 {
public:
  virtual void func() = 0;
};

class Derived : public Base1, public Base2 {
public:
  void func() override { }
};

int main() {
  Derived d;
  d.func();
  return 0;
}

是的,这段代码格式正确, void func()会覆盖A::func()B::func() 从C ++ 14标准:

[class.virtual]

  1. 如果虚拟成员函数vfclass Baseclass Derived class Base声明,直接或间接从Base class Derived ,则具有相同名称的成员函数vf ,parameter-type-list(8.3.5),cv-qualification和声明了Base::vf ref-qualifier(或不存在相同的),然后Derived::vf也是虚拟的(无论是否如此声明)并且它覆盖Base::vf

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM