为了为作为基类存储在std::vector中的派生类编写重载函数,我们需要遵循以下步骤:
以下是一个示例代码,演示了如何为基类存储在std::vector中的派生类编写重载函数:
#include <iostream>
#include <vector>
class Base {
public:
virtual ~Base() = 0; // 纯虚析构函数
virtual void foo() const {
std::cout << "Base::foo()" << std::endl;
}
};
Base::~Base() {}
class Derived : public Base {
public:
void foo() const override {
std::cout << "Derived::foo()" << std::endl;
}
};
int main() {
std::vector<Base*> vec;
vec.push_back(new Derived());
vec.push_back(new Base());
for (const auto& obj : vec) {
obj->foo(); // 调用派生类的重载函数
}
// 释放内存
for (const auto& obj : vec) {
delete obj;
}
return 0;
}
在上述示例中,我们定义了一个基类Base和一个派生类Derived。在基类中声明了一个虚函数foo(),并在派生类中重写了该函数。然后,我们使用基类指针存储派生类对象,并通过std::vector进行管理。在主函数中,我们遍历std::vector并调用派生类的重载函数foo()。
请注意,这只是一个简单的示例,用于说明如何为基类存储在std::vector中的派生类编写重载函数。实际应用中,您可能需要根据具体的业务需求进行更复杂的设计和实现。
领取专属 10元无门槛券
手把手带您无忧上云