关于string做形参的有关问题

关于string做形参的问题
本帖最后由 yalun1990 于 2013-01-01 16:50:14 编辑
类似于 void func(string str)这样以string对象作形参时,假如实参是test_string, 我在linux下用gdb调试时发现 str 和 test_string 的_M_p值是一样的。这个是不是表示对象数据域是指向同一个字符串呢? 这是不是默认拷贝构造函数执行位拷贝时造成的?

谢谢!
string 形参 拷贝 gdb

------解决方案--------------------
不是,只是一种优化,如果你尝试修改str,它就变了。

------解决方案--------------------
copy on write技术,修改时才复制一份


------解决方案--------------------
你把str[i]改成str.at(i)  看看改没改? 我这只有vc6,没办法试,而vc6下他们俩直接不相同
------解决方案--------------------
考虑到效率问题, 这种写法是不容易遇到的... 用引用或者指针吧.