我正在为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
吗?
答案 0 :(得分:5)
对象的大小是在编译过程中确定的,与std::vector values
的动态分配的内存无关。这是因为在编译期间,编译器将为指向变量和对象的指针分配固定的内存。因此,在您的情况下,指向您的std::vector
的指针。
关于使用std::unique_ptr
是否可行,很难说不看整体设计,但我个人的选择是避免出现这种情况。