基类有个函数返回一个值,其派生类也都有这个函数,现在有一个基类*类型的数组,数组的每个元素都是一个派生类类型的,如何通过数组来调用派生类的这个函数
时间: 2024-02-23 13:03:17 浏览: 112
在派生类的构造函数中调用基类的构造函数
可以使用虚函数来实现运行时多态,即在基类中将该函数声明为虚函数,在派生类中进行覆盖重写。具体实现方式如下:
1. 在基类中定义虚函数:
```
class Base {
public:
virtual int getValue() { return 0; }
};
```
2. 在派生类中覆盖重写该虚函数:
```
class Derived1 : public Base {
public:
int getValue() override { return 1; }
};
class Derived2 : public Base {
public:
int getValue() override { return 2; }
};
```
3. 创建一个基类指针数组,并将其元素赋值为派生类对象:
```
Base* arr[2];
arr[0] = new Derived1();
arr[1] = new Derived2();
```
4. 通过数组来调用派生类的函数,由于该函数是虚函数,所以会根据实际对象类型进行动态绑定:
```
for (int i = 0; i < 2; ++i) {
std::cout << arr[i]->getValue() << std::endl;
}
```
输出结果为:
```
1
2
```
这样就可以通过数组来调用派生类的函数了。注意要在基类中将该函数声明为虚函数,否则不会进行动态绑定。
阅读全文