C++中对于string类型的变量进行连续两次赋值,如 string str="today";str="tomorrow"; 前后两次赋值str的

前后两次赋值str的首地址有没有变化?对于字面值常量"today"分配的内存什么时候收回?... 前后两次赋值str的首地址有没有变化?
对于字面值常量"today"分配的内存什么时候收回?
展开
 我来答
sky28_sky28
2013-05-02 · TA获得超过404个赞
知道小有建树答主
回答量:299
采纳率:0%
帮助的人:242万
展开全部
前后两次赋值str的首地址极有可能是变化的。
因为string里面的内存是动态分配的,想要赋值新的值,必须把上一次分配的空间收回,然后再分配更大的空间,所以首地址很有肯能是变化的。
至于字面值常量“today”是存放在常量区域的,只有程序运行结束之后才会收回的。
如果楼主学过C的话,应该很好理解。如果没学过的话,建议楼主看下C中关于内存这块的内容。C++中关于内存的处理其实跟C中差不多。
不懂可以追问。
zhang_hao_ran
2013-05-02
知道答主
回答量:12
采纳率:0%
帮助的人:11.6万
展开全部
#include<string>
#include<iostream>
using namespace std;
int main()
{
string str="00";
printf("%d\n",&str);
str="abcdeaa34523467hgdfsde";
printf("%d\n",&str);
str="ooo";
printf("%d\n",&str);
return 0;
}
我试了一下貌似不变
在我电脑上都是1244972
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qipilangfour
2013-05-02 · TA获得超过232个赞
知道小有建树答主
回答量:274
采纳率:0%
帮助的人:126万
展开全部
str是一个对象,不是字符数组,对象分配完了,首地址也不会变化。
常量"today"只是一个临时变量,用完就不用了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
箩勒个卜
2013-05-02
知道答主
回答量:28
采纳率:0%
帮助的人:18万
展开全部

前后两次str的首地址没有变化

“today”是字符串常量吧 是在代码区的 

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友3038d88
2013-05-02 · TA获得超过1097个赞
知道小有建树答主
回答量:1670
采纳率:0%
帮助的人:1169万
展开全部
String & String::operate =(const String &other) // 输入参数为const型
{
if(this == &other) //检查自赋值
return *this;
delete [] m_data; //释放原有的内存资源
int length = strlen( other.m_data );
m_data = new char[length+1]; //对m_data加NULL 判断
strcpy( m_data, other.m_data );
return *this; //返回本对象的引用
}

原型实现.. 经常做面试题来考.
一看便知.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式