这样做的原因是我想在使用此类时强制所有对象成为智能指针。因此,我可以保存一些代码,例如
class Vector2 final : shared_ptr<Vector2>
{
...
inline shared_ptr<Vector2> getVector2(); //--> inline Vector2 getVector2();
...
inline static float dot(const shared_ptr<Vector2> a, const shared_ptr<Vector2> b); //--> inline static float dot(const Vector2 a, Vector2 b);
}
这是对的吗?如果是,这是最佳做法吗?如果不是,什么是最好的?
==================================================== =================================
也许我用另一个例子
class Sprite
{
private:
Vector2* pPosition;
shared_ptr<Vector2> position;
Image* pBackground;
shared_ptr<Image> background;
};
让我解释一下为什么我需要引用计数。当我更新位置或背景时,我需要在分配新值之前处理删除操作。
这个怎么样
inline static shared_ptr<Vector2> add(const Vector2* a, const Vector2* b)
这将返回一个结果,在退出函数之前可能会或可能不会使用该结果。然后如果不使用我需要手动删除。
代码节省意味着 1. 无需手动删除对象 2. 无需关心是 shared_ptr 还是 Vector2*。因为我想标准化成为一种类型