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
没有。不必要的刷新可能会导致性能下降。请参阅。