<分区>
例如:
struct A
{
virtual void go() { };
};
struct B : public A
{
void go() { };
};
函数 go
的隐式覆盖可能是不可取的,因为无法识别 B::go()
隐藏或覆盖结构 的相同功能A
甚至可能是struct A
中不存在的新函数。 C++11 的 override
特性在你想要覆盖虚函数时很有用,但在我的例子中这是不可取的,我不想覆盖函数 go()
,这意味着如果我知道有一个虚函数,我就不会在结构 B
中覆盖
它。
我想要的是类似 [[check_names]] attribute proposal 的东西不同意 C++11。 C++ 有它的语言特性吗?
顺便说一句,编译器(例如 GCC 和 VC++)是否有显示警告的选项(如果错误不可用,警告就足够了!)如果发生了对虚函数的隐式覆盖?如果他们有,你能提供一个 GCC 的例子吗?
编辑:我不是在谈论强制或语言功能,我想要的只是一个警告或任何能让我识别不受欢迎的覆盖的东西。
编辑:什么可以是理想的覆盖?它可以类似于以下代码:
struct A
{
virtual void go() { };
};
struct B : public A
{
virtual void go() { };
};
或:
struct A
{
virtual void go() { };
};
struct B : public A
{
void go() override { };
};
或使用属性进行类似操作。