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

时间:2012-12-06 08:51:32

标签: c++ map reference destructor

我跑到以下计划,请注意value的{​​{1}}是参考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()析构函数,你能解释一下为什么吗?

1 个答案:

答案 0 :(得分:8)

删除引用时不会调用析构函数。说到这......我想maps with references would be illegal