重载和重写的区别是什么?
时间: 2023-09-22 15:11:59 浏览: 98
重写和重载的区别
重载(Overload)和重写(Override)是两个不同的概念。
重载是指在同一个作用域中,函数名相同但参数列表不同的多个函数,编译器会根据不同参数列表的个数、类型、顺序等进行选择调用不同的函数。
例如:
```cpp
void func(int x);
void func(int x, int y);
void func(double x);
```
这里有三个函数名相同但参数列表不同的函数,它们是重载关系。
重写是指子类中的函数与父类中的函数有相同的函数名、参数列表和返回值类型,子类中的函数会覆盖掉父类中的函数,实现多态性。
例如:
```cpp
class A {
public:
virtual void func();
};
class B : public A {
public:
void func() override; // override关键字用于明确指示这是一个重写函数
};
```
这里的B类继承自A类,并重写了A类的func()函数,实现了多态性。注意,子类中重写的函数必须与父类中的函数有相同的函数名、参数列表和返回值类型,否则就不是重写,而是重载。
阅读全文