永发信息网

c++ 中使用std::map< key, Type > 时发现map容器的异常,会对Type在没有构造的情况下,进行多次析构。

答案:2  悬赏:60  手机版
解决时间 2021-12-24 05:52
  • 提问者网友:溺爱和你
  • 2021-12-23 14:28
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++类的基本规则。
最佳答案
  • 五星知识达人网友:山君与见山
  • 2021-12-23 15:14
构造函数 还有复制构造函数。 A(A&){}//调用了2次复制构造
mapa[1] = A(); //这里能编译。pair 才行吧。
全部回答
  • 1楼网友:怙棘
  • 2021-12-23 16:19
构造函数 还有复制构造函数。 a(a&amp;){}//调用了2次复制构造 mapa[1] = a(); //这里能编译。pair&lt;key,value&gt; 才行吧。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯