为什么map :: clear不会调用析构函数?

URL*_*L87 1 c++ destructor reference map

我跑到下面的程序,请注意,valuemap是一个参考(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() ; 




}
Run Code Online (Sandbox Code Playgroud)

得到输出 -

Hay ! 
Bye !
Run Code Online (Sandbox Code Playgroud)

好像myMap.clear()没有受到影响因为没有人再打电话给 ClassA析构函数,你能解释一下为什么吗?

Kar*_*k T 8

删除引用时不会调用析构函数.说到这......我认为带参考的地图是非法的