C++ 0x中的最终虚函数

B_o*_*old 5 virtual final c++11

读到你可以在C++ 0x中拥有最终的虚函数我有点困惑.首先省略两个修饰符有什么区别?

Pup*_*ppy 10

区别在于它不是使用它的基础,而是派生的.

class Base {
    virtual void foo() = 0;
};
class Derived : Base {
    void foo() {} 
    // Still virtual because it's virtual in base- no way to "un-virtual" it

    virtual void foo() final {} 
    // Now un-overridable.
};
Run Code Online (Sandbox Code Playgroud)

可以认为它不是为了防止覆盖,而是防止"不再"覆盖.