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

时间:2018-02-16 12:55:52

标签: c++ inheritance virtual-functions

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

import re

data = """
a.b.c
a."b.c".d
a.'b.c'.d
a.'b c'.d
"""

rx = re.compile(r"""(["']).*?\1|(?P<dot>\.)""")
needle = "SUPERMAN"

def replacer(match):
    if match.group('dot') is not None:
        return needle
    else:
        return match.group(0)

for line in data.split("\n"):
    if line:
        line = rx.sub(replacer, line)
        parts = [part.strip("'").strip('"') for part in line.split(needle) if part]
        print(parts)

1 个答案:

答案 0 :(得分:3)

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

  

[class.virtual]

     
      
  1. 如果在a中声明了虚拟成员函数vf   直接或间接派生的class Baseclass Derived   来自Base,具有相同名称的成员函数vf,   参数类型列表(8.3.5),cv-qualification和ref-qualifier(或   声明为Base::vf,但Derived::vf也是如此   虚拟(无论是否如此声明)并覆盖它   Base::vf
  2.   
相关问题