派生类调用基类成员函数
时间: 2023-07-09 09:31:24 浏览: 41
当派生类需要调用基类的成员函数时,可以在派生类中使用作用域解析运算符"::"来指定基类成员函数。例如,如果基类的成员函数名为baseFunction",派生类可以这样调用:
```
class DerivedClass : public BaseClass {
public:
void derivedFunction() {
BaseClass::baseFunction(); // 调用基类的成员函数
}
};
```
在派生类的成员函数中,可以使用"::"来调用基类的任何成员函数、变量或类型。
相关问题
C++派生类中的成员函数能调用基类中的成员函数吗
是的,C++中派生类中的成员函数可以调用基类中的成员函数。派生类可以继承基类的公有成员函数和公有成员变量。当派生类中的成员函数需要调用基类中的成员函数时,可以使用作用域解析运算符 `::` 来调用基类中的成员函数。
例如,假设有一个基类 `BaseClass` 和一个派生类 `DerivedClass`,其中 `BaseClass` 有一个公有成员函数 `baseFunc()`:
```cpp
class BaseClass {
public:
void baseFunc() {
std::cout << "This is a function in the base class." << std::endl;
}
};
class DerivedClass : public BaseClass {
public:
void derivedFunc() {
std::cout << "This is a function in the derived class." << std::endl;
baseFunc(); // 调用基类中的成员函数
}
};
```
在派生类的成员函数 `derivedFunc()` 中,可以直接调用基类中的成员函数 `baseFunc()`。如果基类中的成员函数和派生类中的成员函数同名,可以使用作用域解析运算符 `::` 来显式地指定调用基类中的成员函数,例如:
```cpp
class BaseClass {
public:
void baseFunc() {
std::cout << "This is a function in the base class." << std::endl;
}
};
class DerivedClass : public BaseClass {
public:
void baseFunc() {
std::cout << "This is a function in the derived class." << std::endl;
BaseClass::baseFunc(); // 显式地调用基类中的成员函数
}
};
```
在派生类的成员函数 `baseFunc()` 中,可以使用 `BaseClass::baseFunc()` 显式地调用基类中的成员函数。
基类派生类有相同成员函数函数
如果基类和派生类都有相同的成员函数名,那么在派生类中调用该函数时,会覆盖掉基类中的同名函数。如果需要在派生类中调用基类中的同名函数,可以使用作用域解析运算符"::"。以下是一个示例:
```
#include <iostream>
using namespace std;
class Base {
public:
void foo() {
cout << "Base foo" << endl;
}
};
class Derived : public Base {
public:
void foo() {
cout << "Derived foo" << endl;
}
void callBaseFoo() {
Base::foo(); // 调用基类中的 foo 函数
}
};
int main() {
Derived d;
d.foo(); // 调用派生类中的 foo 函数
d.callBaseFoo(); // 调用基类中的 foo 函数
return 0;
}
```
在上面的代码示例中,派生类Derived中定义了一个同名的成员函数foo(),但是在callBaseFoo()成员函数中,使用了Base::foo()来调用基类中的同名函数。当派生类的对象调用foo()函数时,会调用派生类的foo()函数,而在callBaseFoo()函数中调用foo()函数时,会调用基类的foo()函数。