首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++多态阵列句法或多态向量句法

C++多态阵列句法或多态向量句法
EN

Stack Overflow用户
提问于 2022-07-12 13:40:56
回答 1查看 39关注 0票数 0

所以我有一个名为item的主父类,这个类有两个子类,名为bookperiodical。我想要做的是让一个多态数组或一个多态向量能够这样做:现在这个例子在C#中(但我想在C++中这样做)

代码语言:javascript
复制
    item [ ] items = new items [100]; 
    items[0] = new book(); 
    items[1] = new periodical();
    for (int i = 0; i < items.size; i++ ) {
            items[i].read();
    }

就像我说的,小示例代码在C#中,但是我想在C++中这样做,但我不知道如何处理它。我想使用数组,但我的研究,我还没有找到一个明确的方法来完成这一点。我也认为向量是否可以使用或这个,但我也不确定。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-12 14:06:24

下面是一个例子(如果您有问题,请告诉我):

代码语言:javascript
复制
#include <iostream>
#include <memory>
#include <vector>

class Item
{
public:
    virtual ~Item() = default; // base classes with virtual methods must have a virtual destructor
    virtual void read() = 0;
};

class Book final :
    public Item
{
public:
    void read() override
    {
        std::cout << "book read\n";
    }
};

class Periodical final :
    public Item
{
public:
    void read() override
    {
        std::cout << "periodical read\n";
    }
};

int main()
{
    std::vector<std::unique_ptr<Item>> items;

    // use emplace_back for temporaries
    items.emplace_back(std::make_unique<Book>());
    items.emplace_back(std::make_unique<Periodical>());

    // range based for loop over unique_pointers in items
    // use const& so item cannot be modified and & to avoid copy of unique_ptr (unique_ptr doesn't have a copy constructor)
    for (const auto& item : items)
    {
        item->read();
    }

    return 0;

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72953293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档