首先,我们需要了解C++中的多态性和虚函数。在C++中,可以通过将基类指针指向派生类对象来实现多态性。为了实现这一点,需要在基类中声明虚函数。
以下是一个简单的示例,说明如何将std::vector<Derived>类型的指针设置为std::vector<Base>类型的对象:
#include<iostream>
#include<vector>
class Base {
public:
virtual void print() {
std::cout << "Base class print function"<< std::endl;
}
};
class Derived : public Base {
public:
void print() override {
std::cout << "Derived class print function"<< std::endl;
}
};
int main() {
std::vector<Base*> base_vector;
std::vector<Derived*> derived_vector;
Base* base_ptr = new Base();
Derived* derived_ptr = new Derived();
base_vector.push_back(base_ptr);
derived_vector.push_back(derived_ptr);
// 将std::vector<Derived*>类型的指针设置为std::vector<Base*>类型的对象
for (auto ptr : derived_vector) {
base_vector.push_back(ptr);
}
// 调用基类和派生类的print函数
for (auto ptr : base_vector) {
ptr->print();
}
// 释放内存
for (auto ptr : base_vector) {
delete ptr;
}
return 0;
}
在这个示例中,我们首先创建了两个向量:一个基类向量和一个派生类向量。然后,我们创建了两个指针,一个指向基类对象,另一个指向派生类对象。接下来,我们将基类指针添加到基类向量中,将派生类指针添加到派生类向量中。
接下来,我们将派生类向量中的指针设置为基类向量的对象。这是通过遍历派生类向量并将每个指针添加到基类向量中来实现的。
最后,我们遍历基类向量并调用每个对象的print函数。在这个例子中,我们可以看到基类和派生类的print函数都被调用了,这就是多态性的体现。
请注意,这个示例仅用于演示目的,实际应用中可能需要更复杂的数据结构和算法。
领取专属 10元无门槛券
手把手带您无忧上云