1

我跑到下面的程序,注意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() ; 




}

并获得输出 -

Hay ! 
Bye !

似乎myMap.clear()没有受到影响,因为没有人再调用 ClassA析构函数,你能解释一下为什么吗?

4

1 回答 1

8

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

于 2012-12-06T08:54:13.957 回答