C++ 11具有新的override
限定符,可以应用于成员函数以声明它们覆盖基类中的虚函数.C++ 11还允许尾随返回类型,因此可以将函数声明为auto f() -> return_type
.当我结合这两个功能时,我不知道是override
在之前还是之后->
.
例如,假设我们有以下基类:
struct Base {
virtual auto f () const -> int = 0;
};
Run Code Online (Sandbox Code Playgroud)
派生类的两种可能性是:
struct Derived : public Base {
virtual auto f () const override -> int { return 0; } // Compiles on g++ 4.7.1
};
Run Code Online (Sandbox Code Playgroud)
要么
struct Derived : public Base {
virtual auto f () const -> int override { return 0; } // Compiles on clang++ 4.0
};
Run Code Online (Sandbox Code Playgroud)
g ++ …