优秀的编程知识分享平台

网站首页 > 技术文章 正文

C++11 新特性之(10)override 和 final

nanyue 2025-01-20 15:36:15 技术文章 4 ℃

提高代码安全性:override 和 final 如何防止意外错误

override和final关键字用于增强代码的安全性,防止意外的重写或继承。

override

  • 显式声明重写虚函数,如果基类没有对应的虚函数,则编译错误。

final

  • 禁止派生类重写虚函数或禁止类被继承。

示例代码

#include <iostream>

class Base {
public:
    virtual void foo() const {
        std::cout << "Base::foo" << std::endl;
    }
};

class Derived : public Base {
public:
    void foo() const override { // 显式重写
        std::cout << "Derived::foo" << std::endl;
    }
};

class FinalClass final { // 禁止继承
public:
    void bar() {
        std::cout << "FinalClass::bar" << std::endl;
    }
};

int main() {
    Derived obj;
    obj.foo(); // 输出: Derived::foo

    FinalClass finalObj;
    finalObj.bar(); // 输出: FinalClass::bar

    return 0;
}

测试代码

#include <cassert>

void testOverrideFinal() {
    Derived obj;
    assert(obj.foo() == "Derived::foo");
}

int main() {
    testOverrideFinal();
    std::cout << "All tests passed!" << std::endl;
    return 0;
}

Tags:

最近发表
标签列表