定义一个基类Base有两个公有成员函数fun()和fun2(),私有派生出Derived类,在主函数中通过派生类Derived的对象调用基类函数func1()
时间: 2024-05-03 21:17:45 浏览: 111
以下是示例代码:
```c++
#include <iostream>
class Base {
public:
void fun() {
std::cout << "Base::fun() called." << std::endl;
}
void fun2() {
std::cout << "Base::fun2() called." << std::endl;
}
};
class Derived : private Base {
public:
void callBaseFun() {
fun();
}
};
int main() {
Derived d;
d.callBaseFun();
return 0;
}
```
输出结果:
```
Base::fun() called.
```
在上述代码中,我们定义了一个名为 `Base` 的基类,其中包含了两个公有成员函数 `fun()` 和 `fun2()`。接着我们定义了一个名为 `Derived` 的私有派生类,它继承自 `Base`。在 `Derived` 中,我们定义了一个名为 `callBaseFun()` 的公有成员函数,它调用了 `Base` 中的 `fun()` 函数。
最后,在主函数中,我们创建了一个 `Derived` 对象 `d`,并调用了它的 `callBaseFun()` 函数。该函数会调用基类中的 `fun()` 函数,并输出相应的信息。
相关问题
private派生类可以通过指针对象调用基类的虚函数吗
是的,private派生类(即基类的所有成员除公有成员外,都被声明为私有的子类)虽然不能直接通过子类的对象访问基类的私有(包括虚函数)成员,但是可以通过基类的指针或引用来间接调用虚函数。这是因为虚函数在基类中仍然是可见的,所以你可以创建基类类型的指针,然后指向子类的对象,进而调用其继承自基类的虚函数。这样可以实现运行时的行为多态。
例如:
```cpp
class Base {
public:
virtual void fun() { /* base implementation */ }
};
class Derived : private Base {
// Derived 类中无法直接访问 Base 的私有成员
};
int main() {
Derived* derivedPtr = new Derived(); // 创建 Derived 对象
Base* basePtr = derivedPtr; // 将 Derived 指针转换为 Base
// 通过 basePtr 调用虚函数
basePtr->fun(); // 这将执行 Derived 中的虚函数实现
}
```
阅读全文