簡體   English   中英

為何再次使用cout時會輸出輸出反斜杠和數字?

[英]Why is cout outputting outputting backslashes and digits when I use it again?

我有這段代碼(我拼湊了一些東西,試圖在我嘗試編寫的國際象棋程序中隔離出一個奇怪的錯誤):

 #include <vector>
 #include <iostream>

class piece{
public:
 piece() : COLOUR('C'){}
 const char COLOUR;
};

std::vector<piece*> makeEmptyLine(){
 std::vector<piece*> emptyLine;
 piece null;
 emptyLine.push_back(&null);
 return emptyLine;
}

int main(){
 std::vector<piece*> emptyLine = makeEmptyLine();
 std::cout << (*emptyLine[0]).COLOUR;
 std::cout << (*emptyLine[0]).COLOUR;
 std::cout << (*emptyLine[0]).COLOUR;
 return 0;
}

輸出為C\\367\\367

第一個std::cout << (*emptyLine[0]).COLOUR; 始終打印“ C”(預期結果)。 但是,當再次使用它時,它會輸出反斜杠和三位數字,這些數字根據我在程序中使用cout的次數而改變。

您有未定義的行為,因為您使用了局部變量null的地址,該變量一旦函數makeEmptyLine()返回就被銷毀。

當您嘗試以最高警告級別進行編譯時,編譯器會抱怨嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM