[问题] const摆放位置

楼主: anoymouse (没有暱称)   2014-11-25 23:43:03
const int fun1()
int fun2(const int x)
为何都是没有意义的? 网络上说如果输入参数采用“值传递”,由于函数将自动产生临时
变量用于复制该参数,该输入参数本来就无需保护,所以不要加const
复制一个临时的变量跟保护有什么关系?
第一个函式不就是回传到const int的变量
第二个是传递的值不能改变 不是吗 ?
作者: uranusjr (←這人是超級笨蛋)   2014-11-25 23:44:00
你的理解没问题, 前面说的网络说法没有全文无法评论, 但此两例中的 const 绝对不是没有意义
作者: wuliou (wuliou)   2014-11-26 00:01:00
通常会搭配&用 有些大物件copy会太吃效能这时候const可以避免失误改到传进来的东西
作者: firose (guest也是也是也是也是也)   2014-11-26 00:24:00
第二行不能说没意义 至少可以确保改 int 在函数内不会被改
楼主: anoymouse (没有暱称)   2014-11-26 00:25:00
看不懂网络上的意思
作者: Push5F (帐号已卖)   2014-11-26 00:35:00
2意思是保证不会动到你传进来的值
楼主: anoymouse (没有暱称)   2014-11-26 01:12:00
const simple *const function()第二个const是说指标也不能改变对吗
作者: dirkc (3781615)   2014-11-26 11:40:00
第一个不是,因为复制值所以不限制回传接的地方也需const
作者: purpose (秀才遇到肥宅兵)   2014-11-26 12:03:00
http://codepad.org/zhih7unj 去掉fun1()的 const 才能跑
作者: dirkc (3781615)   2014-11-26 16:22:00
可以和这个一起思考:http://codepad.org/R9fsOgoS回传是const如楼上的code,但经过复制值(=)后,接的地方不限第二个是说在function的范围(scope)内,该变量为const原po在推文问的问题:对,代表不能改变指向的地方了,固定了可再思考这个: http://codepad.org/mnqj0Y92
楼主: anoymouse (没有暱称)   2014-11-26 20:25:00
我看看再问你们 谢谢

Links booklink

Contact Us: admin [ a t ] ucptt.com