类对象的大小是否随其私有成员的增长而增长?

时间:2019-05-19 19:20:20

标签: c++

我正在为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());

所以我的问题是:如果我增加其私有成员backend_ptr的规模,是否会增加values的规模?根据您的建议,我什至不需要这个unique_ptr吗?

1 个答案:

答案 0 :(得分:5)

对象的大小是在编译过程中确定的,与std::vector values的动态分配的内存无关。这是因为在编译期间,编译器将为指向变量和对象的指针分配固定的内存。因此,在您的情况下,指向您的std::vector的指针。

关于使用std::unique_ptr是否可行,很难说不看整体设计,但我个人的选择是避免出现这种情况。