【发布时间】:2017-12-06 10:37:36
【问题描述】:
我读了一本关于游戏编程模式的书,并决定在我不上课的时候写一个小引擎来娱乐/练习,这会大量使用对象指针。
我创建了一个Tile 类来表示地图的一个区域(位于标准的 2D 坐标平面上,它是指向 Tile 对象的指针的 2D 数组),其中包含其他类型的对象(臭名昭著的瓷砖陷阱,一个字符和一个地面类型),如下所示,其中包含指向 tile 对象将保存的数据的指针。
class Tile
{
public:
enum TileType{
WATER_DEEP,
WATER_SHALLOW,
GRASS,
MUD
};
Trap* getTileTrap();
GameObject* getTileObject();
TileType* getTileType();
Trap *tileTrap;
GameObject *tileObject;
TileType *tileType;
Tile();
virtual ~Tile();
protected:
private:
};
我很好奇的是它是否更高效,内存/性能明智,保持它的编写方式,让这个 tile 对象(在堆上分配)包含指向其他对象的指针,或者我应该废弃指针并简单地返回对象?
如果我保留它的编写方式,指针指向的对象是在堆上的其他地方创建的吗?它们会被随机分配到某个地方,还是将它们与创建时分配给 Tile 对象的空间一起分配?
【问题讨论】:
-
这与其说是效率考虑,不如说是设计问题。你的对象有身份和可变状态吗?在这种情况下,您不能简单地“返回对象”,因为生成的副本将是不同的对象。
-
使用智能指针
标签: c++ memory-management heap-memory