C++中的Const与Final

我在 C++ 中学习 OOPS,我遇到了关键字constfinal. 现在我怀疑它们之间有什么区别。

回答

鉴于存在的其他答案,我想这个问题需要一个答案。

final在 C++ 中你不能应用变量,所以“哪个更好”的问题只能用“ const,因为只有这个才能编译”。


final 说明符被引入到 C++11 并且可以应用:

  1. 到类,在这种情况下,类不能用作基类
class A final {};
class B: public A {}; //error
  1. virtual功能,防止派生类从覆盖它
class A {
    virtual void foo() = 0;
};
class B: public A {
    void foo() final {}
};
class C: public B {
    void foo() {} //error
};

const 关键字从一开始就在 C++ 中,用于

  1. 将变量标记为不可修改。非成员变量必须在声明的地方初始化,成员必须在构造函数初始化列表中初始化。它不像final在 Java 中,你不能分配给它一次。
const std::vector<int> v;
v = std::vector<int>{}; //error
v.push_back(1); //error
  1. 将类成员函数标记为可用于const对象。这也可以防止您修改该函数内的类成员
class A {
    int n;
public:
    int getN() const {return n;}
    void setN(int n) {this->n = n;} //cannot be const, modifies a member
};

const A a;
a.getN(); //fine
a.setN(5); //error


以上是C++中的Const与Final的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>