4 개의 요소가있는 스택에 대한 클래스를 작성하고 있습니다. 다음과 같이 정의 :C++ 클래스의 배열 초기화
// HPStack.h
class HPStack{
public:
HPStack();
void push(int x);
int pop();
int peek();
private:
int stack[];
};
// HPStack.cpp
HPStack::HPStack(){
int stack[4] = {0,0,0,0};
}
// push/pop functions
// ....
int HPStack::peek(){
return stack[0];
}
은 그 때 나는 그것을 전화 :
int main(){
HPStack* stack = new HPStack();
cout << stack->peek() << endl;
return 0;
}
하지만이 main
기능을 실행할 때 (++ g로 컴파일)는 출력 : 137048
를 실제로는 0을 인쇄 할 때. 여기서 무슨 일이 일어나고 있으며 문제를 해결하기 위해 무엇을 할 수 있습니까?
당신의 ctor가 완료되면 ctor의 local []이 없어 지므로 쓰레기가있는 int int stack [] 클래스가 남아 있습니다. – snoofkin