1

value私は次のプログラムに実行します、のmapは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() ; 




}

そして出力を取得します-

Hay ! 
Bye !

myMap.clear()影響を受けていない ようClassAですが、デストラクタを呼び出す人はもういません。理由を説明していただけますか?

4

1 に答える 1

8

参照が削除された場合、デストラクタは呼び出されません。そういえば..参照付きの地図は違法だと思いました

于 2012-12-06T08:54:13.957 に答える