2011-04-29 9 views
0

내 C++ 프로그램의 콘솔 I/O를 처리 할 클래스 UI가 있습니다. cin 입력을 얻기 위해 'string input'변수를 사용할 4-5 멤버 함수를 가지며 이러한 함수 중 일부는 재귀 적입니다. 이제 각 함수의 시작 부분에 '문자열 입력'을 선언해야하는지, 아니면 private 멤버 변수가 있고 각 함수의 시작 부분에 input.clear()를 사용하는 것이 더 나은지 궁금합니다. 스타일 p-o-v와 효율성 p-o-v에서 최상의 선택은 무엇입니까?멤버 변수를 사용하거나 함수 내에서 변수를 선언해야합니까?

답변

3

입력 된 문자열이 장기적으로 개체와 지속적으로 관련되어 있지 않고 단기간에 로컬로만 사용되고있는 경우 로컬 변수로 지정하십시오.

1) 어쨌든 의미심장합니다.

2) 자신을 재귀 적으로 호출하는 경우, 재귀 호출마다 별도의 변수가 필요합니다. 로컬 변수가 자동으로 제공합니다.

3) 효율 관점에서 볼 때 차이가 너무 작아서 알 수 없으며 b) 객체의 멤버 변수를 가리키는 것보다 스택에 새 변수를 만드는 것이 더 빠릅니다 비싸다.

0

dfan에 동의합니다. 또 다른 요점은 멤버 변수로 정의하는 경우 멤버 함수 구현을이 문자열의 소스에 대한 지식으로 분리해야한다는 것입니다. 예를 들어 std :: cin 대신 파일 I/O에서 읽는 것과 같이 나중에 문자열 소스를 변경하면 메서드가 변경되지 않습니다.

관련 문제