请教用const修饰函数参数的问题

theegao 2008-04-03 07:42:47
比如现在二个函数:
int Fun1(const int a; const int b)
{
return a+b;
}

int Fun2(int a, int b)
{
return a+b;
}
在函数调用效率上来讲,有什么不同么?
...全文
236 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lala_benben 2008-04-04
  • 打赏
  • 举报
回复
...没区别..
Treazy 2008-04-04
  • 打赏
  • 举报
回复
类型const只对类型作安全检测,

这2个函数实现的功能完全一样,效率没有差别
wpalhm 2008-04-04
  • 打赏
  • 举报
回复
int Fun1(const int a; const int b)
{
return a+b;
}

int Fun2(int a, int b)
{
return a+b;
}
这么写没什么必要!
你的行参都是临时变量.函数返回后,内存就释放了!声明为const,好非const的话都没什么差别!
如果你是想你的行参不被改变,但又怕自己不小心改变了.那就用第一种吧!
在效率上没什么区别!

如果是类成员!你大可以用const函数!
mymtom 2008-04-04
  • 打赏
  • 举报
回复
效率上没有区别.
hityct1 2008-04-04
  • 打赏
  • 举报
回复
从效率上将没区别。
jieao111 2008-04-03
  • 打赏
  • 举报
回复
这样的参数,,,在普通内存区分配内存的吧..需要保护的才进栈的把..再一个,,只是表明不能被修改,,分配内存 应该没有区别
jieao111 2008-04-03
  • 打赏
  • 举报
回复
在参数进栈时有何不同吗


参数会进栈吗,,在普通内存区分配内存的吧
ryfdizuo 2008-04-03
  • 打赏
  • 举报
回复
如果函数里面禁止修改的参数都可以用const修饰,
theegao 2008-04-03
  • 打赏
  • 举报
回复
多谢楼上指点...
那个用const引用传递的问题我倒是知道一些咯.因为引用只是实参的别名.不会进行构造.
这样二个函数在参数进栈时有何不同吗?在内存的分配上会有什么不同咯???
HengStar 2008-04-03
  • 打赏
  • 举报
回复
int Fun1(const int a; const int b) //将传递过来的实参作为const类型看待,即不能修改实参a,b的值
{
return a+b;
}

int Fun2(int a, int b)
{
return a+b;
}

这种情况不存在什么效率问题,但是传递过来是对象的时候采用const引用传递,就会存在效率问题了,例如类的拷贝构造函数都是传递类的const引用形式,因为这样的话就不必先将实参复制一份再拷贝,而是直接拿传递的实参给拷贝构造该对象
形如
class Obj
{
public:
Obj(const Obj& obj); //拷贝构造函数

private:
//.............
};
theegao 2008-04-03
  • 打赏
  • 举报
回复
当然只是拿举例的嘛.主要是想知道下有什么不同.内存方面什么的.不是很懂啊~~~~
ttkk_2007 2008-04-03
  • 打赏
  • 举报
回复
没什么不同吧
这么短的函数,即使有不同,又会有多少不同呢

64,439

社区成员

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

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