C++中的override和final关键字
C++11 中新引入的override和final关键字,他们有什么用途呢?
以代码为例
final关键字
例1:
#include <iostream>
using namespace std;
class A {
public:
virtual void Test() final{
cout << "TestA" << endl;
}
};
class B :public A {
void Test() {
cout << "TestB" << endl;//报错无法重写“final”函数 "A::Test"
}
};
由例子可知,编译器会检测出这个函数不能被覆盖,因此会将其从类的虚表中删除。
例2:
#include <iostream>
using namespace std;
class A final{
public:
virtual void Test(){
cout << "TestA" << endl;
}
};
class B :public A {//报错,不能将“final”类类型用作基类
void Test() {
cout << "TestB" << endl;
}
};
有例子可知,标记为final