首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++如何将std :: vector <Derived*>类型的指针设置为std :: vector <Base*>类型的对象

首先,我们需要了解C++中的多态性和虚函数。在C++中,可以通过将基类指针指向派生类对象来实现多态性。为了实现这一点,需要在基类中声明虚函数。

以下是一个简单的示例,说明如何将std::vector<Derived>类型的指针设置为std::vector<Base>类型的对象:

代码语言:cpp
复制
#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函数都被调用了,这就是多态性的体现。

请注意,这个示例仅用于演示目的,实际应用中可能需要更复杂的数据结构和算法。

相关搜索:指向std::vector对象的指针如何将矢量std::vector设置为OAT++ C++如何编写函数签名来接受任何类型的std::vector?对于类型'map<std::__1::string,vector<std::__1::string> >,没有可行的重载operator[]链表与指向对象的指针的std::vector的性能比较'for each‘语句不能对类型为"std::vector<Vertex *,std::allocator<Vertex *>>“的表达式进行操作在C++中释放指针的std :: vector的正确方法是什么?用于在C++ std :: <vector>容器中存储多种类型的结构的模式基类对象的c++ std::vector -派生类的运行方法删除std :: vector中间的元素仍然是昂贵的可移动类型?在C++中,是否可以在不兼容类型的std::vector对象之间传输不同类型的缓冲区如何构造成员变量为`unique_ptr`的对象的` `std::vector`?将hana::tuple中的类型转换为hana::tuple中的std::vector<type>VDHL错误:文本或符号"UNSIGNED“附近的对象的转换类型必须与目标对象的std_logic_vector类型匹配将一种类型的std::vector转换为另一种类型std :: vector是否将其值类型的赋值运算符用于push_back元素?是否有可能在C++中的std :: vector <char>中将指针作为连续的内存片段?我可以将std::vector中的内存重新转换为完全不同的类型吗?无拷贝模板法中C++ - add<T>对象到std::vector<abstract C>的正确方法C++ std::vector<T*>如果你持有一个指向指针元素的指针,它会在调整大小时失效吗?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的视频

领券