當我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++達爾文獎的需求...... –
-858993460不是一個奇怪的值。轉換爲十六進制,它是0xcccccccc。每當你在調試版本中使用MSVC++時,在調試器中看到它時,你就會「啊,我正在使用一個未初始化的變量!」。標準錯誤。 –
@Janisimo:除了答案中提到的問題,構造函數中還存在類似的問題。您正在初始化構造函數中的局部變量,而類成員仍未初始化。 – AnT