c++派生类 重写的函数如何调用基类原函数
时间: 2023-10-13 17:06:16 浏览: 45
在C++中,如果我们在派生类中重写了基类的虚函数,我们可以使用作用域解析运算符(::)来调用基类中的原函数。
例如,假设我们有一个基类Animal和一个派生类Dog,Animal类有一个名为speak()的虚函数,我们想在Dog类中重写它并调用基类中的原函数。我们可以这样写:
```c++
class Animal {
public:
virtual void speak() {
cout << "Animal speaking" << endl;
}
};
class Dog : public Animal {
public:
void speak() override { // 使用override关键字重写基类中的虚函数
cout << "Dog barking" << endl;
Animal::speak(); // 调用基类中的原函数
}
};
```
在上面的代码中,我们在Dog类中重写了基类中的speak()函数,并使用作用域解析运算符(::)来调用基类中的原函数。这将在调用Dog类中的speak()函数时,先输出"Dog barking",然后再调用基类中的speak()函数输出"Animal speaking"。这样我们就可以在派生类中调用基类中的原函数。
相关问题
派生类的函数调用基类的函数的实例
假设有一个基类 `BaseClass` 和一个派生类 `DerivedClass`,其中 `BaseClass` 中有一个名为 `baseFunc` 的函数。如果在 `DerivedClass` 中想要调用 `baseFunc` 函数,可以使用以下方法:
```python
class BaseClass:
def baseFunc(self):
print("This is a function from the base class.")
class DerivedClass(BaseClass):
def derivedFunc(self):
# 调用基类的函数
self.baseFunc()
d = DerivedClass()
d.derivedFunc() # 输出 "This is a function from the base class."
```
在上述代码中,`DerivedClass` 中的 `derivedFunc` 函数可以通过 `self.baseFunc()` 调用 `BaseClass` 中的 `baseFunc` 函数。由于 `DerivedClass` 继承自 `BaseClass`,所以可以使用 `self` 关键字访问到基类中的函数。
C++派生类的函数如何覆盖基类的函数
在C++中,派生类可以覆盖(Override)基类的函数。要覆盖基类的函数,派生类中的函数必须具有与基类中要覆盖的函数相同的名称、参数列表和返回类型。此外,覆盖函数在派生类中必须使用关键字“virtual”进行声明。例如:
```cpp
class Base {
public:
virtual void func() {
cout << "This is Base class function" << endl;
}
};
class Derived : public Base {
public:
void func() {
cout << "This is Derived class function" << endl;
}
};
```
在上面的例子中,派生类Derived覆盖了基类Base的函数func()。当使用Derived类的对象调用func()函数时,将会执行Derived类中的函数。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)