開發平台(Platform): (Ex: Win10, Linux, ...)
Linux
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
GCC 5.4
問題(Question):
昨天碰到的奇妙問題:
#include<iostream>
#include<string>
using namespace std;
int main() {
//string str("aaa");
const char* x = string("111").c_str();
const char* y = string("222").c_str();
cout << x << "\n"; // 222(第一行不註解的話會是111)
cout << y << "\n"; // 222
}
上面程式碼x和y的輸出都是222
是因為等號右邊都是string物件的rvalue 所以第二個就直接覆蓋掉第一個嗎?
但如果按照這樣解釋 為什麼前面隨便加個其他的string(第一行不註解的話)
x的輸出結果就變正常的111了?
目前搜了一下沒找到答案
感謝解答