1. final
C++11中提供了final
关键字。
作用:
- 写在类名后面,限制类不能被继承。
- 写在函数后面,限制函数被重写。
1.1 限制函数
被final
限制的函数无法被重写。
#include <iostream>
#include <cstring>
using namespace std;
class Person{
public:
Person(){}
virtual void show();
};
class Student: public Person{
public:
Student(){}
void show() final;
};
void Student::show(){
cout << "Student" << endl;
}
class Pupil: public Student{
public:
Pupil(){}
// void show(); 因为Student中对该虚函数使用了final关键字,因此此处无法进行重写
};
在上述案例中,Person中的虚函数在派生类中被重写,且加上了final
关键字,组织了Student的派生类Pupil继续对该函数进行重写。
1.2 限制类
被final
限制的类无法被继承。
class Person final{
public:
Person(){}
virtual void show();
};
// Student类无法通过编译
// class Student: public Person{};
在上述案例中,Student类无法通过编译,因为Person被final
限制,无法被继承。
2. override
override
关键字用于确保派生类中生命的重写函数和虚函数拥有相同的签名,同时明确表示将会重写虚函数,从而保证重写虚函数的正确性,提高代码可读性。和final
一样,override
要写在函数后面。
class Person{
public:
Person(){}
virtual void show();
};
class Student: public Person{
public:
Student(){}
void show() override;
};
void Student::show(){
cout << "Student" << endl;
}
标签:show,void,public,Person,Student,override,final
From: https://www.cnblogs.com/beasts777/p/17875385.html