我使用了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::?是否只是提高可读性的"代码风格"?
谢谢
如果您要从具有冲突虚函数的多个基类派生,这将有助于解决歧义。我怀疑这就是 VisualAssistX 选择插入IBase::.
是否IBase::有助于提高可读性是有争议的。我个人觉得它分散注意力。
此外,其语法甚至不是标准的 C++。请参阅具有相同名称的纯虚函数的不同实现,了解如何使用标准、可移植的 C++ 解决多重继承问题的讨论和建议。