【发布时间】:2019-10-06 06:02:07
【问题描述】:
我正在为我的 SLAM 算法编写一个类,这是我的第一个大型 C++ 项目!
我记得std::unique_ptr 应该在我想保留一些应该具有动态内存、一个所有者和较长生命周期的对象时使用。因此,当设计一个特定的类时,它的对象只被创建一次并且应该有一个全局生命周期(它是保存映射的核心类对象)。所以我的想法是创建将保存该对象的 std::unique_ptr:
class Backend
{
private:
std::vector<double> values;
/// some members
public:
Backend() : values{0} {}
~Backend(){}
// some functions
};
auto backend_ptr = std::make_unique(Backend());
所以我的问题是:如果我超时增加其私人成员values 的大小,backend_ptr 的大小会增加吗?根据你的建议,我还需要这个unique_ptr 吗?
【问题讨论】:
-
无法增加
values成员的大小。它是在编译时定义的,与values.size()返回的值无关。同时backend_ptr的大小与Backend的大小无关,也是在编译时定义的。 -
有点不清楚你在问什么。
sizof(Backend)这样的表达式将是稳定的,并在编译时确定。 -
@VTT 我认为向量具有非静态内存,可以增加或缩小超时
-
如果我超时增加其私有成员值的大小,backend_ptr 的大小会增加吗? 不,这是一个编译时间常数.
-
我认为向量具有非静态内存,可以随时间增加或缩小向量可以分配它在堆上的数据,但是与
Backend或backend_ptr甚至values的大小无关。
标签: c++