因为掉进坑了,所以就认真分析了下map[key]=value的实际过程,方便以后自己查阅。过程如下:
1. 默认构造函数生成一个临时value 1;
2. 拷贝构造函数生成一个临时value 2, 它是由value 1拷贝过来的;
3. 拷贝构造函数再生成一个map 成员的value 3, 它是由value 2拷贝过来的;
4. 析构value 2;
5. 析构value 1;
6. operator = 赋值函数把value 赋值给value 3;
以上分析是通过vs2010分析的。
ps: 这也是为什么我在没有重载赋值函数时,不过怎么修改拷贝构造函数都不能正确赋值成员指针变量。