gpt4 book ai didi

c++ - 是否可以识别不需要的虚函数覆盖?

转载 作者:太空狗 更新时间:2023-10-29 23:03:37 25 4
gpt4 key购买 nike

<分区>

例如:

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 { };
};

或使用属性进行类似操作。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com