在C ++中覆盖关键字
函数覆盖是C++最常见的功能。从根本上说,函数重写意味着重新定义一个在基类中存在的函数,该函数也在派生类中定义。因此,功能签名相同,但行为会有所不同。
但是在某些情况下,程序员在覆盖该功能时会犯一个错误。就像签名不一样一样,那么它将被视为另一个函数,但不会被覆盖的方法或那个。在这种情况下,我们可以使用override关键字。此关键字是在C++11中引入的。当编译器找到这种关键字时,它可以理解这是同一类的重写版本。
让我们看示例以了解概念。
示例
#include <iostream>
using namespace std;
class BaseClass{
public:
virtual void display() {
cout << "Displaying from Base Class\n";
}
};
class DerivedClass : public BaseClass{
public:
void display() {
cout << "Displaying from Derived Class\n";
}
};
main() {
BaseClass *b_ptr;
b_ptr = new DerivedClass();
b_ptr->display();
}输出结果
Displaying from Derived Class
在这种情况下,程序运行正常,因为签名相同。在以下示例中,签名将不同。对于override关键字,它将生成一个错误。
示例
#include <iostream>
using namespace std;
class BaseClass{
public:
virtual void display() {
cout << "Displaying from Base Class\n";
}
};
class DerivedClass : public BaseClass{
public:
void display(int x) override{
cout << "Displaying from Derived Class\n";
}
};
main() {
BaseClass *b_ptr;
b_ptr = new DerivedClass();
b_ptr->display();
}输出结果
[Error] 'void DerivedClass::display(int)' marked override, but does not override
在这种情况下,程序运行正常,因为签名相同。在以下示例中,签名将不同。对于override关键字,它将生成错误。
热门推荐
10 小红书平安祝福语简短
11 生日祝福语大全女孩简短
12 收生日红包祝福语 简短
13 领证幽默祝福语简短
14 法考面试祝福语简短
15 老哥出门祝福语简短语
16 送灯祝福语简短独特
17 幼儿狗年祝福语大全简短
18 好听的元旦简短祝福语