簡體   English   中英

為什么map :: clear不調用析構函數?

[英]Why map::clear doesn't call to the destructor ?

我運行以下程序,請注意, mapvalue是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析構函數,您能解釋一下為什么嗎?

刪除引用時不調用析構函數。 說到這..我認為帶有參考的地圖將是非法的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM