c++引用调用方式是什么
3个回答
推荐于2018-04-11
展开全部
引用是直接使用.不引用就是 复制一个给定参数的版本,然后用克隆版进行操作.
引用与否有以下两个重要区别:
1.引用效率比非引用高.考虑关于string类型的某函数some(string &x);
这个是引用,函数内部直接使用x本身进行操作,而如果是非引用,函数内部生成一个临时的string,这个临时的string 和x 一样.然后对临时的string进行操作.显然,生成一个小的string 不需要花太多时间,但是当string非常大的时候,引用和非引用的区别就明显了,而且当参数扩展到对象的时候就更明显,有的对象非常之大使得非引用方式效率无法忍受.
2.引用可以修改参数本身而非引用则不可以.正如上一点所述,引用直接对参数进行操作,因而函数内部对引用参数的任何修改都会在函数外体现.举例子,考虑如下函数:
void setx(int &x)
{
x=3;
}
假设有int t=4;执行setx(t) 后,t=3;如果去掉引用符号,则setx(t)后t的结果是不变的.
这一点可以使得引用可以作为函数返回的一种手段,比如考虑计算x*3的void函数:
void int x3(int x,int &sum)
{
sum=x*3;
}
在调用之前sum是什么值无关紧要,重要的是调用后sum的值就是x*3的值,这正是我们想要的结果.
但是这一点在有些情况下是我们不想看到的,比如有一个数据规模巨大无比的对象我们要调用它但是我们不想调用函数修改它.如果是非引用,这不成问题--记住非引用函数不会改变参数--然而这个巨大的对象对于非引用的调用来说效率实在低下.c++提供const 关键字 对我们的矛盾 给出了一个不错的解决方案.
考虑以下函数:
void setx(const int &x)
{
x=4;
}
编译失败.以const声明的参数x 是无法在函数内部被修改的.
当然,不用const也可以,只要你确定你的代码不修改"不希望修改的参数"的值就行,然而人毕竟是人,代码多了程序长了难免会有疏漏,所以我们用计算机提醒我们.这就是我们使用计算机的初衷之一...
.....over
引用与否有以下两个重要区别:
1.引用效率比非引用高.考虑关于string类型的某函数some(string &x);
这个是引用,函数内部直接使用x本身进行操作,而如果是非引用,函数内部生成一个临时的string,这个临时的string 和x 一样.然后对临时的string进行操作.显然,生成一个小的string 不需要花太多时间,但是当string非常大的时候,引用和非引用的区别就明显了,而且当参数扩展到对象的时候就更明显,有的对象非常之大使得非引用方式效率无法忍受.
2.引用可以修改参数本身而非引用则不可以.正如上一点所述,引用直接对参数进行操作,因而函数内部对引用参数的任何修改都会在函数外体现.举例子,考虑如下函数:
void setx(int &x)
{
x=3;
}
假设有int t=4;执行setx(t) 后,t=3;如果去掉引用符号,则setx(t)后t的结果是不变的.
这一点可以使得引用可以作为函数返回的一种手段,比如考虑计算x*3的void函数:
void int x3(int x,int &sum)
{
sum=x*3;
}
在调用之前sum是什么值无关紧要,重要的是调用后sum的值就是x*3的值,这正是我们想要的结果.
但是这一点在有些情况下是我们不想看到的,比如有一个数据规模巨大无比的对象我们要调用它但是我们不想调用函数修改它.如果是非引用,这不成问题--记住非引用函数不会改变参数--然而这个巨大的对象对于非引用的调用来说效率实在低下.c++提供const 关键字 对我们的矛盾 给出了一个不错的解决方案.
考虑以下函数:
void setx(const int &x)
{
x=4;
}
编译失败.以const声明的参数x 是无法在函数内部被修改的.
当然,不用const也可以,只要你确定你的代码不修改"不希望修改的参数"的值就行,然而人毕竟是人,代码多了程序长了难免会有疏漏,所以我们用计算机提醒我们.这就是我们使用计算机的初衷之一...
.....over
2013-07-19
展开全部
就是自己编辑一个函数用于主函数(后其他函数)的调用,使程序更易懂简洁
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-19
展开全部
int a(int &c) ;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询