【发布时间】:2017-01-22 06:54:38
【问题描述】:
以下代码产生了不正确的输出:
string my_string="My_First_Text";
char * my_pointer=(char *)(my_string+"My_Second_Text").c_str();
为什么?当我初始化my_pointer 时,我认为不需要my_pointer=new char[100]。如果这个假设不成立,那为什么?
【问题讨论】:
-
你要听从你的警告。哦,我明白了,你把警告扔掉了:你现在独自一人,这看起来不是一件好事。
-
顺便说一句,代码不会产生任何输出,更不用说任何不正确的输出了。
-
This is what the compiler told you。但是由于某种原因,您认为您比编译器更了解并抛弃了错误。
-
@PeterA.Schneider, @Paul:禁用的警告与问题无关。将
const添加到第二行并没有更多警告,但问题仍然存在。 -
@Ben 你是对的。我认为所有答案都指出了造成问题的临时问题。
标签: c++ string pointers temporary-objects