【发布时间】:2016-11-24 09:25:44
【问题描述】:
想象一下
class A
{
public: virtual void f() = 0;
};
class B
{
public: virtual void f() = 0;
};
class C : public A,B
{
public: virtual void f()
{ // implementation here
}
};
C c();
这似乎可以编译。 (没有尝试编译我的示例,而是一个更复杂的现实生活场景)。
我有点惊讶它确实可以编译。 我本来会抱怨(关于 C 的实例化),因为我只实现了一种抽象基础方法。 (即使他们有相同的名字。)
这是否像我期望的那样工作(假设函数 f 在两个基中具有相同的含义)还是有任何陷阱?
【问题讨论】:
-
请忽略 C c();语法错误。我的意思是通过任何方式实例化 C 类的对象。
标签: c++