开发平台(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了?
目前搜了一下没找到答案
感谢解答