读书人

求大神解答下边代码

发布时间: 2013-08-10 21:14:06 作者: rapoo

求大神解答下面代码!



string的对象中不是直接存放字符串的,是用一些变量、指针来管理一个字符串,这个字符串是new出来,地址在别的地方。
你把str2管理字符串的一套数据内存拷贝到str1,str1的那些指针也指向str2管理的字符串。
所以对str1[0]做的操作,直接反映在str2上。他们管理的是同一个字符串。
[解决办法]
其中的问题关键在于memcpy,虽然你申请了两个临时变量str1 str2,但是你在使用memcpy的时候是把&str2的内容拷贝到&str1里面去了的,memcpy是完全的拷贝,所以str1和str2其中的内容完全一样,包括那个指向存储字串的成员变量的指针值,所以你修改了str1的内容str2的内容也就跟着改变了,这个你可以跟代码看到的

读书人网 >C++

热点推荐