const作为函数参数

scutwyz 2012-04-24 03:21:31
在boost库当中

shared_ptr & operator=(shared_ptr<Y> const & r)
{
}

const 放在这个位置是什么意思,一般来说不是应该放在:

void StringCopy(char *strDestination, const char *strSource);

这个样的位置吗


另外,可以看到在boost库当中:
shared_ptr( shared_ptr const & r ): px( r.px ), pn( r.pn ) // never throws
{
}
然而,shared_ptr这个类不是需要模板来实例化的的吗,在这里指代参数类型的时候为什么又可以免掉呢?
...全文
168 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
风的翅膀 2012-04-24
  • 打赏
  • 举报
回复
const的参数只是在程序运行时参数的值不被调用的函数改变,不一定要加const的
muyi66 2012-04-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
但事实上,我输入的参数只是一个普通shared_ptr(没有const),由weak_ptr.lock()起来,但是在这地方却没有编译报错?
[/Quote]声明为const的参数只是在函数里不能被更改,没有要求它的实参必须是const的。
scutwyz 2012-04-24
  • 打赏
  • 举报
回复
shared_ptr & operator=(shared_ptr<Y> const & r)
{
}

传入的参数就必须是 const shared_ptr<Y> & 类型才能被调用?
这样的说法是否正确呢?
scutwyz 2012-04-24
  • 打赏
  • 举报
回复
但事实上,我输入的参数只是一个普通shared_ptr(没有const),由weak_ptr.lock()起来,但是在这地方却没有编译报错?
孙暖阳 2012-04-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
放在哪里都无所谓,比如
const char *

char const *
是一样的,关键是看const出现在*的左边还是右边。再比如:
const char *

char * const就不一样了。
[/Quote]

同意
scutwyz 2012-04-24
  • 打赏
  • 举报
回复
按照上面的说法:
shared_ptr & operator=(shared_ptr<Y> const & r)
{
}

传入的参数就必须是 const shared_ptr<Y> & 类型才能被调用咯?

pathuang68 2012-04-24
  • 打赏
  • 举报
回复
放在哪里都无所谓,比如
const char *

char const *
是一样的,关键是看const出现在*的左边还是右边。再比如:
const char *

char * const就不一样了。
scutwyz 2012-04-24
  • 打赏
  • 举报
回复
按照这个类的模板实现,来实现这个参数?
evencoming 2012-04-24
  • 打赏
  • 举报
回复
1.一样的,两种写法而已. 茴字都四种写法呢,这个两种写法,很平常的.
2. 这个是在类里面的实现吧? 这时候可以省略 模板参数..

64,691

社区成员

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

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