我有一个类似的类:
但是,在初始构造函数之后,复制构造函数被调用10次。
如果我不执行线程创建步骤。它被叫了4次,这是我所期望的。
这是为什么?我该如何避免?
在这种情况下,我应该避免使用std::vector,而只是执行新的删除操作吗?
#include <cstdio>
#include <vector>
class A
{
public:
A() { printf("hello\n"); }
~A() { printf("Goodbye\n"); }
A(const A&)
{
printf("copy constructing\n");
}
Thread() { }
};
int main()
{
std::vector<A> a(4, A);
for (int i = 0; i < a.size(); i++){
threads_.create_thread(boost::bind(&A::Thread, a[i]));
}
}
好的,我发现了问题。
这是:
threads_.create_thread(boost::bind(&A::Thread, a[i]));
应该是:
threads_.create_thread(boost::bind(&A::Thread, &a[i]));