std::map作为类成员
我有一个带有成员 std::map<int,int> 的类 X m_lookupTable。我应该使用以下哪项:
Class X {
...
private:
std::map<int,int> m_lookupTable;
...
}
或在类的析构函数中使用new和分配delete
class X{
private:
std::map<int,int>* m_lookupTable;
X() {
m_lookupTable = new std::map<int,int>();
}
~X(){
delete m_lookupTable;
}
}
什么应该是首选方式,为什么?
回答
我建议使用一个简单的成员。动态分配它,没有任何好处,并且无缘无故地增加了不必要的开销。如果处理不当,它还可能导致内存泄漏。
当您使用作业或复制课程时,您还必须小心,然后您必须自己处理。
如果可能,总是更喜欢自动而不是动态对象。