【发布时间】:2016-01-18 09:09:19
【问题描述】:
我正在尝试学习 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() 它工作正常。为什么它不会抛出一个错误,说对内存位置的访问无效?
【问题讨论】:
-
您的代码不包含对无效变量的任何访问。您可以编辑您的问题以准确解释您认为问题出在哪里吗?发布您的实际代码而不是描述它会有所帮助。
标签: c++ class variables methods scope