目录
final关键字
final的第二个作用
override关键字
为了防止我们忘记重写虚函数,c++11提供了2个关键字来帮助我们检查
final关键字
修饰虚函数,被修饰的虚函数不能被重写
class A
{
public:
virtual int add(int x, int y) final
{
return x + y;
}
};
class B :public A
{
int add(int x, int y) //修饰虚函数,被修饰的虚函数不能被重写
{
return x + y;
}
};
被修饰后就不能进行重写,不然编译器会报错
注意:修饰的是基类的虚函数
?
final的第二个作用
class A final
{
public:
virtual int add(int x, int y)
{
return x + y;
}
};
class B :public A
{
int add(int x, int y)
{
return x + y;
}
};
被final修饰的类不能进行继承,不然编译器会报错
?
override关键字
检查派生类虚函数是否完成重写,没有完成重写就会报错
class A
{
public:
virtual int add(int x, int y)
{
return x + y;
}
};
class B :public A
{
int add(int x, int y) override //检查基类函数是否完成重写,没有完成重写就会报错
{
return x + y;
}
};
注意:但是一般只要基类时虚函数,就会构成重写,因为派生类的函数会继承基类的相同成员的虚属性,构成虚函数
注意:修饰的是子类的虚函数
|