我在这里缺少什么?这真是太刺激了!
基本上,在main()t.p3()
中总是产生随机垃圾,好像指针无效,但其他一切总是有效!我确定差异在于字符串的长度。这是什么伏都教?
如何让t.p3()
工作?
#include <string>
#include <iostream>
static const std::string STRING1( "xxxxxxxxxxxxxxx" );
static const std::string STRING2( "xxxxxxxxxxxxxxxx" ); // MAGIC 16 characters
struct Test
{
std::string string1() const { return STRING1; }
std::string string2() const { return STRING2; }
const char * p1() const { return STRING1.c_str(); }
const char * p2() const { return STRING2.c_str(); }
const char * p3() const { return string1().c_str(); }
const char * p4() const { return string2().c_str(); }
};
int main(int argc, char *argv[])
{
Test t;
std::cout << t.p1() << std::endl; // works
std::cout << t.p2() << std::endl; // works
std::cout << t.p3() << std::endl; // random garbage
std::cout << t.p4() << std::endl; // works
return 0;
}