【发布时间】:2013-09-02 03:17:21
【问题描述】:
clang 在编译以下代码时发出警告:
struct Base
{
virtual void * get(char* e);
// virtual void * get(char* e, int index);
};
struct Derived: public Base {
virtual void * get(char* e, int index);
};
警告是:
warning: 'Derived::get' hides overloaded virtual function [-Woverloaded-virtual]
(当然需要启用上述警告)。
我不明白为什么。请注意,取消注释 Base 中的相同声明会关闭警告。我的理解是,由于两个 get() 函数的签名不同,所以无法隐藏。
叮当声对吗?为什么?
请注意,这是在 MacOS X 上运行的最新版本的 Xcode。
clang --version
Apple LLVM version 5.0 (clang-500.1.74) (based on LLVM 3.3svn)
更新:与 Xcode 4.6.3 的行为相同。
【问题讨论】:
标签: c++ warnings overloading virtual hidden