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

aik*_*khs 4 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());
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:backend_ptr如果我增加私人成员的values超时工作量,会不会增加?有了您的建议,我是否甚至需要这个unique_ptr

小智 5

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

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