最近项目上使用vector发现一个错误,在push_back时存储的数据出错。具体见代码:
struct PP
{
int a;
PP(int v)
{
a = v;
}
PP(PP &p)
{
a = - 10;
}
};
class AA
{
public :
int a;
AA(int v)
{
a = v;
}
AA(AA &aa)
{
a = -10;
}
};
int main()
{
std::vector<PP> v;
std::vector<AA> vv;
v.push_back(PP(1));
vv.push_back(AA(1));
}
自己调试时,你会发现存储的数据是-10,原因是在在调用push_back时调用了一次拷贝构造函数。ps 传入是指针时,不会调用拷贝构造函数。