const std::string 引用

World7th 2011-01-12 11:26:39
如下代码,这个fun参数的const引用,到底指向什么?临时对象?
void fun(const std::string& str)
{
std::cout << str << std::endl;
}

void main()
{
char buf[6];
fun(buf);
}

...全文
387 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
李亚超 2011-01-12
  • 打赏
  • 举报
回复
一定是:临时对象
h100037 2011-01-12
  • 打赏
  • 举报
回复
应该是临时对象
xgy8705023 2011-01-12
  • 打赏
  • 举报
回复
string的引用指向buf所指向的字符串,它是常引用,在函数fun中不许修改
冻结 2011-01-12
  • 打赏
  • 举报
回复
more effective c++
冻结 2011-01-12
  • 打赏
  • 举报
回复
临时对象
bdmh 2011-01-12
  • 打赏
  • 举报
回复
buf啊,常量引用,你在fun中不允许对它进行修改
  • 打赏
  • 举报
回复
临时对象
fun自动创建了一个临时对象
qq120848369 2011-01-12
  • 打赏
  • 举报
回复
#include <iostream>
#include <string>

using namespace std;

void fun(const string &str) //string::string(const char *)
{
cout<<str<<endl;
}

int main()
{
char buf[6]="Hello";
fun(buf);

return 0;
}
ningweidong 2011-01-12
  • 打赏
  • 举报
回复
只读形式传引用,你不能在函数里修改参数
wwwxinkai 2011-01-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 world7th 的回复:]
如下代码,这个fun参数的const引用,到底指向什么?临时对象?
void fun(const std::string& str)
{
std::cout << str << std::endl;
}

void main()
{
char buf[6];
fun(buf);
}
[/Quote]

路过 引用楼主话题在问一下, 这时走的是string 的copy构造?
如果是临时对象 用const_cast<> 强转后地址是否是一样?
lvguang1998 2011-01-12
  • 打赏
  • 举报
回复
是临时对象
ClassDan 2011-01-12
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 hai040 的回复:]
ls少了const
[/Quote]
的确是少了const,关于const引用的东西又忘了一部分了,哎~~
hai040 2011-01-12
  • 打赏
  • 举报
回复
ls少了const
ClassDan 2011-01-12
  • 打赏
  • 举报
回复
在VS2010下编译错误:

error C2664: “fun”: 不能将参数 1 从“char [6]”转换为“std::string &”

这是为何?
bdmh 2011-01-12
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 gauldoth 的回复:]
发生了从char *到string的隐式类型转换吧。
[/Quote]
是的
gauldoth 2011-01-12
  • 打赏
  • 举报
回复
发生了从char *到string的隐式类型转换吧。
pstrunner 2011-01-12
  • 打赏
  • 举报
回复
++
[Quote=引用 1 楼 akirya 的回复:]
临时对象
fun自动创建了一个临时对象
[/Quote]

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧