코스를 배정하고 C++을 배우는 동안 스택 할당과 동적 할당을 사용해야 할 때를 읽었습니다. 나는 많은 경우 스택 할당을 사용하는 것이 더 쉽고 더 낫다는 것을 알고있다. 그러나 내가 당혹 스럽다는 간단한 상황이 있습니다.C++ 루프 스택 할당
는 for 루프가 있다고 가정하자 :
for(int i = 0; i < 10; i++)
{
MyObject obj(file);
obj.doSomething();
}
이제 문제는 개체의 상태가 포함 된 경우 1에서 10 참깨 반복을 반복하면서, 그것에게 상태를 유지 (동일한 개체를 유지)이다. 어쩌면 Java/C# 배경에서 오는 것이 잘못된 경로로 나를 잡을 것입니다. 그러나이 문제를 해결하는 두 가지 방법 만 볼 수 있습니다.
- 동적 메모리 사용.
- 생성자에 파일을 제공하지 않고 대신
doSomething(file)
메서드에 파일을 제공하지 않지만 파일 객체를 조작하는 메서드가 두 개 이상인 경우에는 좋지 않습니다.doSomethingElse(file)
.
그런 상황에서 너희들은 무엇을합니까? 아니면 전혀 그런 상황에 처지는 못합니까?
업데이트 : 내가 잘못 나온 것으로 예상대로 작동합니다. 아래의 수하물을 확인하십시오! 모두 감사합니다
MyObject obj (file);를 동적 메모리로 바꾼 경우에도 범위 때문에 상태가 유지되지 않습니다. –