关于C++构造与析构函数调用次数匹配有关问题
关于C++构造与析构函数调用次数匹配问题
#include <iostream>
#include <map>
#include <vector>
using namespace std;
class A
{
public:
A()
{
cout<<"A "<<endl;
}
~A()
{
cout<<"~A "<<endl;
}
};
int main()
{
vector<A> va;
va.push_back(A());
map<int, vector<A> > mvA;
mvA[1] = va;
cout << "~~~~~~~~~~~" << endl;
return 0;
}
输出:
A
~A
~~~~~~~~~~
~A
~A
请教: A的构造与析构调用次数为什么不等??
------解决方案--------------------
拷贝构造函数的存在
------解决方案--------------------
自己没有定义拷贝函数时候,系统会使用默认的拷贝构造(编译器生成的),因此你没有看到构造过程,只看到了析构
#include <iostream>
#include <map>
#include <vector>
using namespace std;
class A
{
public:
A()
{
cout<<"A "<<endl;
}
~A()
{
cout<<"~A "<<endl;
}
};
int main()
{
vector<A> va;
va.push_back(A());
map<int, vector<A> > mvA;
mvA[1] = va;
cout << "~~~~~~~~~~~" << endl;
return 0;
}
输出:
A
~A
~~~~~~~~~~
~A
~A
请教: A的构造与析构调用次数为什么不等??
------解决方案--------------------
拷贝构造函数的存在
------解决方案--------------------
自己没有定义拷贝函数时候,系统会使用默认的拷贝构造(编译器生成的),因此你没有看到构造过程,只看到了析构