社区
C++ 语言
帖子详情
在函数参数中fun(const int& n)和fun(int n)有什么区别?
老开山
2010-10-21 01:45:46
问题:fun(const int& n)和fun(int n)有什么区别?
我知道对于class来说, const int&是为了防止拷贝构造,同时防止函数内修改原参数值;
但对于内建类型int,fun(int n)本身并无拷贝构造,值参的传递拷贝也不影响性能。
不知fun(const int& n)这样的用法会有什么好处?(我在有的地方看到这种用法)
...全文
591
28
打赏
收藏
在函数参数中fun(const int& n)和fun(int n)有什么区别?
问题:fun(const int& n)和fun(int n)有什么区别? 我知道对于class来说, const int&是为了防止拷贝构造,同时防止函数内修改原参数值; 但对于内建类型int,fun(int n)本身并无拷贝构造,值参的传递拷贝也不影响性能。 不知fun(const int& n)这样的用法会有什么好处?(我在有的地方看到这种用法)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
28 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
myjackheroes
2013-04-06
打赏
举报
回复
没人会写const int&,在空间上两者一样,在时间上const int&多一层间接, 效率更低,在任何情况下请使用int或者const int const int&和 int&区别是后者不支持临时变量到int&的转换,const版本可以
jiandingzhe
2013-04-06
打赏
举报
回复
这种用法很奇怪:传递基本类型的引用进去,却又不修改,那还不如直接按值传递,没准还能省几个字节的栈。
迪司匹林
2013-04-05
打赏
举报
回复
引用 7 楼 luciferisnotsatan 的回复:
int 是传值。int &是传引用。
你好,能不能告诉我 函数中用这个传递参数是有什么区别? 比如compute(int *n),compute(int &n),compute(int n) 主要是前两者有什么不同? 谢谢
追求执着
2011-10-28
打赏
举报
回复
加const 函数内部不能改变其值!!
也是个很好的习惯!!
fmworld
2011-10-28
打赏
举报
回复
针对这个内置数据,只有习惯上的差别吧
Saingel
2011-10-28
打赏
举报
回复
效率都差不多,前者没什么意义
vilnies
2011-10-28
打赏
举报
回复
fun(const int& n)和fun(const int n)对内建类型传参性能是一样的。
如果n在堆上,而且被多次访问,前者效率肯定比后者要低。
hufenlin1
2011-10-28
打赏
举报
回复
如果算重载 普通调用一定会产生二义性!
ilikework
2010-10-21
打赏
举报
回复
[Quote=引用 11 楼 lazy_2010 的回复:]
对于 int ,很反感使用 const int& 传递参数;没有意义
[/Quote]
但是, 用&后编译出来的exe要小些啊,还是有些意义的
mymtom
2010-10-21
打赏
举报
回复
也许是学C++学入迷了,一切都用引用,不能修改就加const
fun(const int& n) 与 fun(int n)区别不大。
也许是为了与class的 func2(const class FOO & ref)的风格保持一致吧
zzcmx2008
2010-10-21
打赏
举报
回复
fun(const int& n)和fun(int &n)的区别,最好找专门的资料去看,以前看过也和朋友讨论过,现在原因都忘的差不多了,建议你加一个专门讨论C++的群,可以实时的讨论。
zzcmx2008
2010-10-21
打赏
举报
回复
其实更应该讨论一下fun(const int& n)和fun(int n),还有fun(int &n)
fun(const int& n)传的是实参本身,const控制参数在函数内不能被修改。
另外,还可以直接传值进去,如fun(3),而fun(int &n)就不能直接传值进去。
smokingchen
2010-10-21
打赏
举报
回复
不好意思打错了,是effective
smokingchen
2010-10-21
打赏
举报
回复
常引用是个好东西,好处在《effictive C++》(或是《more effictive C++》)中有详细讲解。lz可以参考看看。
harderman
2010-10-21
打赏
举报
回复
如果是内置类型的话,就没有什么区别了.
skuall2005
2010-10-21
打赏
举报
回复
fun(const int& n)和fun(int n)有什么区别?
既然你都知道了 还迷惑什么
在c++中 int也是一个类 不相信你试下int是不是有构造函数
lazy_2010
2010-10-21
打赏
举报
回复
对于 int ,很反感使用 const int& 传递参数;没有意义
zrcvic
2010-10-21
打赏
举报
回复
其实 int 型使用 void f(const int &) 还不如 void f(int) 效率高,所以如果是内置基本数据类型就直接传值好一些。
不过所幸差别不大。使用 const int & 的一个好处是和类类型保持一致,这样形如 template<typename T> void f(const T &) 就可以既接受 类类型 又接受 int……
shenchenman
2010-10-21
打赏
举报
回复
传一个引用的常量和传一个值,效果是一样的,都是不会改变实参的值,区别是传递引用效率高,因为传值需要一个拷贝过程,把实参拷贝给形参,需要再开辟一个内存;传引用就不同了,因为实参和形参就是一个东西,只是两个名字而已,内存是一块内存。
Jim_King_2000
2010-10-21
打赏
举报
回复
据我所知,没啥好处。
加载更多回复(7)
const
int
&x和
int
const
&x和
int
&x和
int
x之间
区别
转自:https://blog.csdn.net/Hk_john/article/details/72459549 一:参数的常量引用
const
int
&a和引用
int
&a的
区别
首先介绍一下为什么我们要使用引用形式进行参数传递。 我们写一个函数 void
fun
(
int
a,
int
b),这样的函数调用时是不会改变参数的值的, 在函数
中
也就是以一个局部变量的形式存在,当函数...
c++基本语法之
函数参数
const
int
&
c++基本语法之
函数参数
const
int
& #include <iostream> using namespace std; //这种方式对参数的修改是全局性的 void
fun
(
int
&x){ x++; } //这种方式的参数是只读的 void
fun
1(
const
int
&x){ cout<<x<<endl; } ...
函数
中
const
int
& a与
int
& a的
区别
const
与&作用
const
常类型作用:形参在子函数
中
调用时当成一个常量来使用,既无法成为左值,无法修改形参的值。 引用(&)作用:如a=&b,表示a是b的别名,此时a和b的地址相同。在子函数
中
调用时,形参的改变就是实参的改变,在C
中
需要用到指针来实现。 函数
fun
(
int
a,
int
b)/
fun
(
int
& a,
int
& b) v...
C++入门系列---参数的常量引用
const
int
&a和引用
int
&a的
区别
C++入门系列---参数的常量引用
const
int
&a和引用
int
&a的
区别
1、首先介绍一下为什么我们要使用引用形式进行参数传递。 我们写一个函数 void
fun
(
int
a,
int
b),这样的函数调用时是不会改变参数的值的,在函数
中
也就是以一个局部变量的形式存在,当函数结束时,变量a,b的生命周期也就结束了。 而对于void
fun
(
int
&a,
int
&b),这种形式进行参数传递,其实是一种指针的形式,如果在函数内我们改变了a,b的值,当函数结束后,..
函数形参和
const
int
&形参
接口函数 1,形参不确定类型时 可以使用decltype; 例如:返回s
中
出现的c的次数。 string::size_type findchar(
const
string &s ,char c,string::size_type &occurs){ auto ret =s.size(); occurs=0; for((decltype(ret)i =0;i!=s.size();++i)){ **//(decltype(ret)i 可以把i的类型和s.size的类型一致。
C++ 语言
64,654
社区成员
250,484
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章