[英]Why map::clear doesn't call to the destructor ?
我運行以下程序,請注意, map
的value
是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.