所以这是我正在处理的代码:
class A
{
public:
A(){}
virtual ~A(){}
void Log(){printf("Log A\n");}
};
int main(int argc, char**argv)
{
A* a = new A();
a->Log(); // "Log A"
map<int,A*> m;
m[1] = a;
m[2] = a;
m[3] = a;
m[1]->Log(); // "Log A"
delete a;
a = NULL;
m[1]->Log(); // "Log A"
return 0;
}
输出:
日志 A
日志 A
日志 A
我的问题:
m[1]->Log()
调用之后不会抛出异常只是偶然delete a
吗?- 擦除映射中指向已删除实例的所有条目的最佳方法是
A
什么?我的意思是我要全部m.find(1)
,m.find(2)
并在删除后m.find(3)
返回。任何意见,将不胜感激。m.end()
a