gpt4 book ai didi

c++ - 为什么 map::clear 不调用析构函数?

转载 作者:太空宇宙 更新时间:2023-11-03 10:32:11 26 4
gpt4 key购买 nike

我运行到以下程序,请注意 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 析构函数,你能解释一下为什么吗?

最佳答案

删除引用时不会调用析构函数。说到这..我想maps with references would be illegal

关于c++ - 为什么 map::clear 不调用析构函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13739940/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com