C++ 创建std::vector<;A&&燃气轮机;并用从

C++ 创建std::vector<;A&&燃气轮机;并用从,c++,inheritance,vector,polymorphism,C++,Inheritance,Vector,Polymorphism,我想创建一个std::vector,并用类B和C的元素填充它,这些元素派生自A struct A { virtual void print (){std::cout << "A" <<std::endl;} }; struct B : public A { void print (){std::cout << "B" <<std::endl;} }; struct C : public A { void print ()

我想创建一个
std::vector
,并用类
B
C
的元素填充它,这些元素派生自
A

struct A {
    virtual void print (){std::cout << "A" <<std::endl;}
};

struct B : public A {
    void print (){std::cout << "B" <<std::endl;}
};

struct C : public A {
    void print (){std::cout << "C" <<std::endl;}
};

int main()
{
    B b;
    C c;
    std::vector<A&> vec{b,c};
    for(auto &e : vec)
    {
        e.print();
    }
    return 0;
}
结构A{
虚拟void print(){std::cout如果您想要值语义,也就是说,如果您想要(逻辑地)使用,您可以使用
std::vector
将元素存储在向量中,而不是用指向外部存储元素的引用/指针填充向量,这很容易出错,因为您负责调节这些元素的生存期。顺便说一下,当不需要刷新语义时,请尽量避免
std::endl
std::endl
刷新缓冲区,而
\n
没有。不必要的刷新可能会导致性能下降。请参阅。