[英]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.