gpt4 book ai didi

c++ - 最终说明符对单独的声明和定义没有影响

转载 作者:搜寻专家 更新时间:2023-10-31 02:06:51 25 4
gpt4 key购买 nike

我注意到 final 关键字有一些奇怪的行为。当我这样做时:

class A {
public:
virtual ~A() = default;
virtual void foo() final {}
};

class B : public A {
public:
void foo() override {}
};

如我所料,在 B 中重写 foo 时出现编译器错误。但是当我对 A::foo 进行单独的定义和声明时

class A {
public:
virtual ~A() = default;
virtual void foo() final;
};

void A::foo() {}

class B : public A {
public:
void foo() override {}
};

错误消失了。是应该如此还是编译器错误?

//编辑:gcc 版本 4.9.2 (Debian 4.9.2-10+deb8u1)

最佳答案

这两个代码段都应该生成有关覆盖 final 函数的编译器错误。这似乎是一个编译器错误。 gcc 4.9.2编译和gcc 4.9.3产生错误。

关于c++ - 最终说明符对单独的声明和定义没有影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49612214/

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