"virtual void IBase :: Foo"和"virtual void Foo"之间有什么区别?

jav*_*red 5 c++ visual-c++

我使用了VisualAssistX Implement Virtual Methods选项,它生成了:

class Base: public IBase
{
public:
    Base(void);
    ~Base(void);
    virtual void IBase::Foo();
Run Code Online (Sandbox Code Playgroud)

我注意到我可以省略IBase并编程仍然编译如下:

    virtual void Foo();
Run Code Online (Sandbox Code Playgroud)

如果这是相同的代码?为什么VisualAssistX会插入IBase::?是否只是提高可读性的"代码风格"?

谢谢

NPE*_*NPE 2

如果您要从具有冲突虚函数的多个基类派生,这将有助于解决歧义。我怀疑这就是 VisualAssistX 选择插入IBase::.

是否IBase::有助于提高可读性是有争议的。我个人觉得它分散注意力。

此外,其语法甚至不是标准的 C++。请参阅具有相同名称的纯虚函数的不同实现,了解如何使用标准、可移植的 C++ 解决多重继承问题的讨论和建议。