Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么地图::clear不';你不给析构函数打电话吗?_C++_Map_Reference_Destructor - Fatal编程技术网

C++ 为什么地图::clear不';你不给析构函数打电话吗?

C++ 为什么地图::clear不';你不给析构函数打电话吗?,c++,map,reference,destructor,C++,Map,Reference,Destructor,我运行以下程序,注意映射的值是一个ref(ClassA&)- #include <iostream> #include <map> using namespace std ; class ClassA { public : ClassA () { cout<<"Hay ! "<<endl ; } ~ClassA () { cout<<"Bye ! "<<en

我运行以下程序,注意
映射的
是一个ref
(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() ; 




}

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

删除引用时不调用析构函数。说到这里。。我认为删除引用时不会调用析构函数。说到这里。。我想那不应该编译,你用的是什么编译器?@Nick我在VS2012和GCC4.3.4上测试过,两个都可以@Nick我有g++(Ubuntu 4.4.3-4ubuntu5.1)4.4.3不应该编译的,你用的是什么编译器?@Nick我在VS2012和GCC4.3.4上测试过,两个都可以@尼克,我有g++(Ubuntu 4.4.3-4ubuntu5.1)4.4.3
Hay ! 
Bye !