小编Fal*_*ard的帖子

C++"虚拟"关键字放置

当我今天在Visual Studio 2015中编写界面时,我发现了一些奇怪的行为.在函数标识符之前放置"virtual"关键字通常无关紧要,但如果将其置于指针或引用之后,则会产生抱怨.请参阅以下内容:

class B {};

class A
{
    virtual B fun1a(); // OK
    B virtual fun1b(); // OK

    virtual B& fun2a(); // OK
    B& virtual fun2b(); // ERROR, "expected an identifier"

    virtual B* fun3a(); // OK
    B* virtual fun3b(); // ERROR, "expected an identifier"

    virtual std::unique_ptr<B> fun4a(); // OK
    std::unique_ptr<B> virtual fun4b(); // OK
};
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

显然我可以通过始终将virtual关键字放在第一位来完全避免错误,但我希望能够通过以下方式编写函数定义:

foo const & // return value and relevant keywords on one line
virtual bar( const baz &a ) const // function identifier, …
Run Code Online (Sandbox Code Playgroud)

c++ syntax virtual syntax-error visual-studio-2015

5
推荐指数
1
解决办法
166
查看次数

标签 统计

c++ ×1

syntax ×1

syntax-error ×1

virtual ×1

visual-studio-2015 ×1