이 C++ 코드가이 방식으로 작동하는 이유를 설명 할 수 있습니까? 그리고 어떻게 미래에이 '벡터'문제를 피할 수 있을까요? void my_str :: insert()
벡터의 요소 멤버 메서드에서 벡터 요소를 삽입하면 destroys가 *
에서
#include <iostream>
#include <vector>
using namespace std;
struct my_str {
int x;
my_str() {
x = 0;
}
void insert();
};
vector<my_str> p;
void my_str :: insert() {
p.push_back(my_str());
x = 123;
}
int main() {
p.push_back(my_str());
p[0].insert();
cerr << p[0].x;
return 0;
}
는
"이 *'을 (를) 파괴한다는 것은 무엇을 의미합니까? 이 코드의 행동은 당신을 혼란스럽게합니까? – delnan
@delnan : "123"이 아닌 "0"을 표시한다고 가정합니다 (http://ideone.com/jyagJK). –