c++一个类继承了另一个类,怎么重写他的函数
时间: 2024-03-13 18:43:50 浏览: 17
在C++中,一个类继承了另一个类,可以使用函数重写(Function Overriding)的方式来重新定义继承的函数。函数重写是指在派生类中重新定义基类中已有的成员函数,使其具有不同的实现。
重写函数的规则如下:
1. 重写的函数必须与基类中的函数具有相同的名称、参数列表和返回类型。
2. 重写的函数必须使用`virtual`关键字进行声明,并且在派生类中使用相同的访问修饰符(public、protected或private)。
3. 重写的函数可以改变基类中函数的行为,但不能改变其接口。
下面是一个简单的例子:
```cpp
class Shape {
public:
virtual void draw() {
cout << "Drawing a shape" << endl;
}
};
class Rectangle : public Shape {
public:
void draw() override {
cout << "Drawing a rectangle" << endl;
}
};
int main() {
Shape* shape = new Rectangle();
shape->draw(); // 调用Rectangle类中的draw函数
return 0;
}
```
在这个例子中,我们定义了一个名为`Shape`的基类和一个名为`Rectangle`的派生类。基类中有一个名为`draw`的虚函数,而派生类中重写了这个函数。
在`main`函数中,我们使用`Shape`类型的指针指向一个`Rectangle`对象,并调用`draw`函数。由于`draw`函数是虚函数且被重写了,因此将调用`Rectangle`类中的`draw`函数,输出"Drawing a rectangle"。
需要注意的是,如果您在派生类中重写了基类中的函数,但是没有使用`override`关键字进行声明,这将导致编译错误。