简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!
优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀
人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.
1.前言
本篇目的:理解重写基类虚函数添加override区别
2.应用实例
v1.0 未加override
#include <iostream>
using namespace std;
class A{
public:
virtual void test_Rf() = 0;
};
class B : public A{
public:
virtual void test_Rf(){
printf("xxx--------->%s(), line = %d\n",__FUNCTION__,__LINE__);
}
};
int main(){
A *a =new B;
a->test_Rf();
}
v2.0 添加override
#include <iostream>
using namespace std;
class A{
public:
virtual void test_Rf() = 0;
};
class B : public A{
public:
virtual void test_Rf() override{
printf("xxx--------->%s(), line = %d\n",__FUNCTION__,__LINE__);
}
};
int main(){
A *a =new B;
a->test_Rf();
}
3.总结
在C++中,关键字`override`用于声明一个成员函数是在派生类中对基类的虚函数进行重写。使用`override`关键字可以帮助编译器在编译时检查重写的正确性。
<1>.如果在派生类的成员函数声明中使用`override`关键字来标记对基类的虚函数的重写,编译器会检查是否有相应的基类函数存在,并且具有相同的函数签名。如果没有找到对应的基类函数或者函数签名不匹配,编译器会报错。
<2>.如果不使用`override`关键字,编译器仍然会将函数定义为虚函数,并且可以在派生类中对其进行重写,但是编译器不会进行重写的正确性检查。这意味着如果派生类的成员函数的函数签名与基类的虚函数不匹配,编译器也不会发出警告或错误。
总结起来,使用`override`关键字可以提高代码的可读性和维护性,同时也可以帮助捕获一些潜在的错误。