我使用以下类:
#include <list>
class A {
public:
A();
A(const A&);
~A();
list<A> createCopies();
private:
int *cells;
};
A::A() {
this->cells = new int[5];
for(unsigned int i = 0; i < 5; i++) {
this->cells[i] = 0;
}
}
A::(const A &oldA) {
this->cells = new int[5];
for(unsigned int i = 0; i < 5; i++) {
this->cells[i] = oldA.cases[i];
}
}
A::~A() {
delete[] this->cells;
}
list<A> A::createCopies() {
list<A> listA;
for(unsigned int i = 0; i < 3; i++) {
A newA = A(*this); // or A newA(*this)?
A.cells[i] = 1;
listA.push_back(newA);
}
return listA;
}
但是,编译器似乎总是在列表中推送相同的对象。我认为对复制构造函数的调用会阻止...
我错了吗 ?我是否需要使用new A
创建对象的方式(从而在某处管理它们的破坏)?