[英]std::map as class member
我有一个 class X 和一个成员 std::map<int,int> m_lookupTable
。 我应该使用以下哪一项:
Class X {
...
private:
std::map<int,int> m_lookupTable;
...
}
或在 Class 的析构函数中使用new
和delete
进行分配
class X{
private:
std::map<int,int>* m_lookupTable;
X() {
m_lookupTable = new std::map<int,int>();
}
~X(){
delete m_lookupTable;
}
}
什么应该是首选方式,为什么?
我建议使用一个简单的成员。 动态分配它,没有任何好处,并且无缘无故地增加了不必要的开销。 如果处理不当,它还可能引入 memory 泄漏。
当您使用 class 的分配或复制时,您还必须小心,您必须自己处理。
如果可能,总是更喜欢自动而不是动态对象。
当成员 object 的生命周期与外部 object 的生命周期相同时,几乎没有理由更喜欢指针。 它只会导致更复杂的代码和更多错误或 memory 泄漏的机会。 当它是私有成员时更是如此,因为在这种情况下,object 的生命周期不太可能需要不同。
如上所述,使用自动装置几乎总是首选。 它要简单得多,从长远来看,维护问题也会少得多。
话虽如此,如果您要存储大量 X 类型的对象,则存在使用指针的情况,其中只有一些需要 m_lookupTable,并且您处于 memory 受限环境中。 这是一种罕见的组合,但并非不可能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.