class A
{
A () { cout << "A struct" << endl; }
~A() { cout << "A destroy" << endl; }
}
std::map< int, A > mapa;
mapa[1] = A();
输出结果:
A struct
A struct
A destroy
A destroy
A destroy
A destroy
你会发现有两次A的构造函数形同摆设,完全违反的C++类的基本规则。
c++ 中使用std::map< key, Type > 时发现map容器的异常,会对Type在没有构造的情况下,进行多次析构。
答案:2 悬赏:60 手机版
解决时间 2021-12-24 05:52
- 提问者网友:溺爱和你
- 2021-12-23 14:28
最佳答案
- 五星知识达人网友:山君与见山
- 2021-12-23 15:14
构造函数 还有复制构造函数。 A(A&){}//调用了2次复制构造
mapa[1] = A(); //这里能编译。pair 才行吧。
mapa[1] = A(); //这里能编译。pair
全部回答
- 1楼网友:怙棘
- 2021-12-23 16:19
构造函数 还有复制构造函数。 a(a&){}//调用了2次复制构造
mapa[1] = a(); //这里能编译。pair<key,value> 才行吧。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯