cout
lettercase
콘솔에 대한 변수가 -858993460
입니다. 다른 모든 것은 괜찮은 것 같습니다. 내가 여기서 무엇을 놓치고 있니? 여기이상한 int 값 얻기
을 주의 :
그래서 여기 내 코드의 샘플입니다
int main()
{
int lettercase = 0;
Switch switcher(lettercase);
lettercase = switcher.getLettercase();
cout << "Lettercase: " << lettercase << endl;
return 0;
}
가 나는 또한 Switch
라는 별도의 클래스가 있습니다. 다음은 헤더 파일의 샘플입니다 :
class Switch {
public:
// DEFAULT CONSTRUCTOR
Switch();
// OVERLOAD CONSTRUCTOR
Switch(int);
// DESTRUCTOR
~Switch();
// Lettercase accessor
int getLettercase();
private:
int lettercase;
};
그리고 여기 내 정의의 예제입니다 :
// DEFAULT
Switch::Switch() {
int lettercase = 0;
}
// OVERLOAD
Switch::Switch(int lettercase) {
// CHANGE LETTER CASE
if (lettercase == 1) {
lettercase = 0;
} else {
lettercase = 1;
}
}
// DESTRUCTOR
Switch::~Switch() {
}
// ACCESSOR
int Switch::getLettercase() {
return lettercase;
}
당신은 주석을 만 의견이 모든 사소한 것들, 그럼에도 당신은 클래스 멤버와 함수 매개 변수에 같은 이름 *을 부여 할 수 있습니다. C++에 대한 다윈 상 (Darwin award)의 필요성에 대해 이야기하십시오 ... –
-858993460은 이상한 가치가 아닙니다. 16 진수로 변환하면 0xcccccccc입니다. 디버그 빌드에서 MSVC++을 사용할 때 디버거에서 다시 볼 때마다 "아, 초기화되지 않은 변수를 사용하고 있습니다!"라고 표시됩니다. 표준 버그. –
@ Janisimo : 답변에서 언급 한 문제 외에도 비슷한 문제가 생성자에 존재합니다. 클래스 멤버가 초기화되지 않은 상태로있는 동안 생성자에서 로컬 변수를 초기화하고 있습니다. – AnT