我想学习C++,并从我的理解中了解,如果变量超出作用域,那么它将被销毁并重新分配其内存。如果我有一个类,它的方法创建一个变量,该方法调用后不应该销毁该变量?例如:C++ - 在类方法中创建的变量的作用域
class TestClass {
public:
struct Pair{
std::string name;
int value;
};
void addPair() {
//should be deleted after push_back is called?
Pair x = Pair{ std::string{ "Test Object " }, counter++ };
pairs.push_back(x);
}
void printPairs() {
for (int i = 0; i < pairs.size(); i++) {
std::cout << "pair { " << pairs[i].name << " : " << pairs[i].value << " } " << std::endl;
}
}
void removePair() {
pairs.pop_back();
}
private:
int counter;
std::vector<Pair> pairs;
};
但当我addPair()
然后printPairs()
然后removePair()
它工作正常。为什么它不会抛出一个错误说无效访问内存位置?
您的代码不包含任何对无效变量的访问。你能编辑你的问题来解释你确实认为问题出在哪里吗?这将有助于发布您的实际代码而不是描述它。 –