一个简单又奇怪的有关问题!
一个简单又奇怪的问题!!!
string s1("cba");
string s2(s1);
char *s = const_cast<char *>(s2.c_str());
s[0] = 'f';
cout << s1 << endl;
这个输出多少?
------解决方案--------------------
g++ 4.4.3所用的标准库libstdc++使用了COW(写时复制)技术,所以楼主代码中s2.c_str()返回的仍是s1和s2共用缓冲区的地址。
string s1("cba");
string s2(s1);
char *s = const_cast<char *>(s2.c_str());
s[0] = 'f';
cout << s1 << endl;
这个输出多少?
------解决方案--------------------
g++ 4.4.3所用的标准库libstdc++使用了COW(写时复制)技术,所以楼主代码中s2.c_str()返回的仍是s1和s2共用缓冲区的地址。