在使用指针数组时,确定指向哪个派生类需要使用多态性。多态性允许您在运行时根据对象的实际类型来调用适当的方法。以下是一个简单的示例,说明如何在使用指针数组时确定指向哪个派生类:
#include<iostream>
using namespace std;
class Base {
public:
virtual void display() {
cout << "Base class display function"<< endl;
}
};
class Derived1 : public Base {
public:
void display() override {
cout << "Derived1 class display function"<< endl;
}
};
class Derived2 : public Base {
public:
void display() override {
cout << "Derived2 class display function"<< endl;
}
};
int main() {
Base* base_ptr[2];
Derived1 d1;
Derived2 d2;
base_ptr[0] = &d1;
base_ptr[1] = &d2;
for (int i = 0; i < 2; i++) {
base_ptr[i]->display();
}
return 0;
}
在这个示例中,我们有一个基类 Base
和两个派生类 Derived1
和 Derived2
。我们使用虚函数 display()
实现了多态性。我们创建了一个指向基类的指针数组 base_ptr
,并将两个派生类的对象的地址分别存储在数组中。
在 for
循环中,我们调用 display()
函数。由于 display()
函数是虚函数,因此在运行时将根据对象的实际类型来调用适当的方法。因此,我们可以确定指针数组中的每个元素实际上指向哪个派生类。
输出将是:
Derived1 class display function
Derived2 class display function
这表明指针数组中的第一个元素指向 Derived1
类,第二个元素指向 Derived2
类。
领取专属 10元无门槛券
手把手带您无忧上云