假设我有一个基类Animal
与虚函数和一些派生类(Cat
,Dog
等).实际派生类包含4-8个字节的数据.我想存储一个std::list<Animal>
实际上包含派生对象的项目.我想避免使用new在堆上创建许多小对象.
有没有可用于实现此目的的设计模式?
编辑:我的想法来实现这一点
std::deque<Cat>
,std::deque<Dog>
...; std::list<Animal*>
包含指针的商店deques
; 我使用的是std::deque
因为我认为它具有良好的内存管理和大量的对象;根据这个答案的评论,引用的引用主要是为了支持运算符重载,引用Bjarne Stroustrup:
引用的引用主要是为了支持运算符重载.C按值传递每个函数参数,并且按值传递对象的效率低或不合适,用户可以传递指针.在使用运算符重载的情况下,此策略不起作用.在这种情况下,符号方便是必不可少的,因此如果对象很大,则不能期望用户插入操作符的地址.
这意味着运算符重载无法使用指针.但它没有清楚地解释为什么运算符重载指针无法工作.为什么运算符重载不能用于指针?
IMO使用引用,指针也可以在其位置使用.