我运行以下程序,请注意value
的map
是引用(ClassA&)
-
#include <iostream>
#include <map>
using namespace std ;
class ClassA {
public :
ClassA () { cout<<"Hay ! "<<endl ; }
~ClassA () { cout<<"Bye ! "<<endl ; }
} ;
int main () {
map< string,ClassA& > myMap ;
ClassA a ;
myMap.insert( pair<string,ClassA&>("A",a) ) ;
myMap.clear() ;
}
并获得输出-
Hay !
Bye !
好像
myMap.clear()
没有受到影响,因为没有人再调用ClassA
析构函数,您能解释一下为什么吗? 最佳答案
删除引用时不调用析构函数。说到其中..我以为maps with references would be illegal
关于c++ - 为什么map::clear不调用析构函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13739940/