C++中override和overload的区别,并用代码解释一下
时间: 2023-09-23 19:04:19 浏览: 56
override和overload是C++中的两个重要概念,它们都与函数相关。
override表示重写父类中的虚函数,子类中的该虚函数必须与父类中的虚函数具有相同的名称、参数列表、返回类型和const属性。override关键字可以增加代码的可读性和可维护性,避免了由于不小心修改函数签名而导致的错误。
overload表示函数重载,即在同一作用域内定义多个名称相同但参数列表不同的函数。函数重载可以让程序员更方便地编写代码,减少函数名称的冲突,提高代码的可重用性。
下面是一个使用override和overload的示例代码:
```c++
#include <iostream>
using namespace std;
class Animal {
public:
virtual void say() const {
cout << "I'm an animal." << endl;
}
};
class Cat : public Animal {
public:
void say() const override {
cout << "I'm a cat." << endl;
}
};
void print(int num) {
cout << "This is an integer: " << num << endl;
}
void print(double num) {
cout << "This is a double: " << num << endl;
}
int main() {
Animal* animal = new Cat();
animal->say(); //输出"I'm a cat."
print(10); //输出"This is an integer: 10"
print(3.14); //输出"This is a double: 3.14"
return 0;
}
```
在上面的代码中,Cat类继承自Animal类,并重写了say()虚函数,使用override关键字标注。另外,print()函数定义了两个重载版本,一个接受int类型参数,另一个接受double类型参数,这样在main函数中可以根据不同类型的参数调用不同版本的print()函数。