相关疑难解决方法(0)

我可以在C++中使用具有值语义的多态容器吗?

作为一般规则,我更喜欢在C++中使用值而不是指针语义(即使用vector<Class>而不是代替vector<Class*>).通常,由于不必记住删除动态分配的对象,因此性能的轻微损失可以弥补.

遗憾的是,当您想要存储所有派生自公共基础的对象类型时,值集合不起作用.请参阅下面的示例.

#include <iostream>

using namespace std;

class Parent
{
    public:
        Parent() : parent_mem(1) {}
        virtual void write() { cout << "Parent: " << parent_mem << endl; }
        int parent_mem;
};

class Child : public Parent
{
    public:
        Child() : child_mem(2) { parent_mem = 2; }
        void write() { cout << "Child: " << parent_mem << ", " << child_mem << endl; }

        int child_mem;
};

int main(int, char**)
{
    // I can have a polymorphic …
Run Code Online (Sandbox Code Playgroud)

c++ stl

32
推荐指数
5
解决办法
9540
查看次数

标签 统计

c++ ×1

stl ×1