在基类可以用子类的成员函数吗
时间: 2024-05-07 10:22:05 浏览: 90
在基类中可以通过调用子类对象的成员函数来访问子类的成员函数,但是需要将基类的成员函数设置为虚函数,以便在运行时根据对象的实际类型调用正确的成员函数。这一特性称为多态性。例如:
```c++
class Base {
public:
virtual void func() {
std::cout << "Base::func() called." << std::endl;
}
};
class Derived : public Base {
public:
void func() override {
std::cout << "Derived::func() called." << std::endl;
}
void derivedFunc() {
std::cout << "Derived::derivedFunc() called." << std::endl;
}
};
int main() {
Base* basePtr = new Derived();
basePtr->func(); // 输出 "Derived::func() called."
//basePtr->derivedFunc(); // 错误,Base 类型没有 derivedFunc 函数
delete basePtr;
return 0;
}
```
在上面的例子中,基类 `Base` 中定义了虚函数 `func`,派生类 `Derived` 重写了该函数,并添加了一个新的成员函数 `derivedFunc`。在 `main` 函数中,通过基类指针 `Base*` 指向一个派生类对象 `Derived`,然后调用 `func` 函数,由于该函数是虚函数,因此会根据对象的实际类型调用正确的函数。虽然 `basePtr` 的类型是 `Base*`,但是它指向的是一个 `Derived` 对象,因此能够访问 `Derived` 类的成员函数,但不能直接访问 `Derived` 类独有的成员函数 `derivedFunc`。
阅读全文