为什么标准不允许“ virtual void funcFoo()= 0 {}”?
|
[我找不到合适的答案。如果已经回答了,请指向正确的链接。]
我知道做这样的事情是非法的,
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() {}
这里的隐式内联和显式内联有什么区别?编译器有什么不同?
没有找到相关结果
已邀请:
3 个回复
春驹晴陪
臀夯脖锑
希望它能回答您的问题。 现在,请参阅@John Dibling提出的第一条评论(如下),很遗憾,您的“为什么”问题的答案不在标准中,如果
不是您可接受的答案。语言语法根本不允许。:-)
俺呵誓放胳
不只是
是什么 隐式内联和 显式内联在这里?是什么 编译器干什么不同? 不同之处在于,第一个变体可以放置在头文件中,而头文件可以被多个源文件包含。第二个变体必须恰好放在一个源文件中。