如何在c++子类中对父类函数进行重载
时间: 2024-10-15 21:18:39 浏览: 29
在 C++ 中,如果你想在子类(Derived Class)中对父类(Base Class)的函数进行重载,通常的做法是在子类中定义一个同名的新函数,但需要使用 `override` 关键字明确表明这是对父类虚函数的重写。即使这个函数在子类中看起来像是简单的重载,由于父类函数已经被标记为虚函数,所以实际上是在创建一个新的重写版本。
下面是一个简单的例子:
```cpp
class Base {
public:
virtual void print(int value) { std::cout << "Base - Int: " << value << std::endl; }
};
class Derived : public Base {
public:
// 重写 Base 的 print 函数,这里不是简单重载而是虚函数重写
override void print(int value) override { std::cout << "Derived - Int: " << value << std::endl; }
// 新增一个同名但不同参数类型的 print 函数
// 注意这里的 'override' 没有指定父类,因为这不是重写
void print(double value) { std::cout << "Derived - Double: " << value << std::endl; }
};
int main() {
Derived derivedObj;
derivedObj.print(5); // 输出 "Derived - Int: 5"
derivedObj.print(3.14); // 输出 "Derived - Double: 3.14"
// 将 Base 的指针指向 Derived 对象,调用的是 Derived 版本的 print 函数
Base* basePtr = &derivedObj;
basePtr->print(7); // 输出 "Derived - Int: 7"
return 0;
}
```
在这个示例中,`Derived` 类中有一个 `print(int)` 的虚函数重写,以及一个接受 `double` 参数的新 `print` 函数,它们都是独立的。
阅读全文