有人可以向我解释,为什么有必要在这个简单的情况下定义复制和赋值运算符。
struct A {
A() {
ptr = new int;
}
~A() {
delete ptr;
}
int* ptr;
};
因为如果我没有定义它们,我只能调整一次矢量大小,并且第二次调整大小后程序会中断。我想了解最新情况。
int main() {
std::vector<A> a_vec;
a_vec.resize(4);
a_vec.resize(5); // program breaks
}
此外,如果我没有定义解构函数,程序工作正常,但我必须定义解构函数才能删除指针,对吗?