Final关键字的使用
对类使用final关键字
#include <iostream>
#include <string>
using namespace std;
// 把类声明为final之后将代表这个类不能被当作基类被重写
// 记住:在类和成员函数声明关键字的形式
class Cstudent final
{
private:
float mark;
string name;
public:
Cstudent(float mark, string name)
{
this->mark = mark;
this->name = name;
}
~Cstudent()
{
cout << "调用析构函数" << endl;
}
};
int main()
{
Cstudent stud(99.99, "超级霸霸强");
}
对成员函数使用final关键字
#include <iostream>
#include <string>
using namespace std;
class Cstudent
{
private:
float mark;
string name;
public:
Cstudent(float mark, string name)
{
this->mark = mark;
this->name = name;
}
~Cstudent()
{
cout << "调用析构函数" << endl;
}
// 对成员函数使用关键字final必须声明为virtual虚函数,因为只有虚函数才支持在子类中重写,这时final关键字才会发挥禁止重写的功能
virtual void ShowInf() final
{
cout << this->name << "的成绩为" << this->mark << "分" << endl;
}
};
class Cperson :public Cstudent
{
private:
char sex;
public:
//void ShowInf(); // 编译器会提示禁止重写该函数
void ShowSex()
{
cout << "该同学的性别是" << sex << endl;
}
};
int main()
{
Cstudent stud(99.99, "超级霸霸强");
}
注意:声明成员函数为final时,必须先声明该成员函数为virtual类型的,因为只有在子类中有重写同名函数的机会,才有可能使final起到禁止重写的作用。