gpt4 book ai didi

c++ - 为什么标准不允许 "virtual void funcFoo() = 0 { }"?

转载 作者:太空宇宙 更新时间:2023-11-04 16:32:09 24 4
gpt4 key购买 nike

[我找不到合适的答案。如果已经回答,请将我指向正确的链接。]

我知道做这样的事情是违法的,

class Base
{
public:
virtual void funcFoo() = 0 {} //illegal. should be defined outside the class body
virtual ~Base() {}
};

但这在 VS2008 上工作正常。我想知道为什么标准不允许这样做?

在 android 上,我看到我必须像这样内联定义函数,

inline void Base::funcFoo() {}

不仅仅是,

void Base::funcFoo() {}

这里隐式内联和显式内联有什么区别?编译器有什么不同?

最佳答案

根据第 §10.4/2 节(在注释中),这是不正确的,

a function declaration cannot provide both a pure-specifier and a definition

[Example:

struct C {
virtual void f() = 0 { }; // ill-formed
};

—end example]

希望它能回答您的问题。

现在请引用@John Dibling 发表的第一条评论(如下),不幸的是,标准中没有回答您的“为什么”问题,如果 “格式不正确” 不是您可以接受的答案。语言语法根本不允许这样做。:-)

关于c++ - 为什么标准不允许 "virtual void funcFoo() = 0 { }"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5722307/

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