为什么c++中类的成员函数参数有时候是类的引用而有时候是类名??求教!!感谢

 我来答
wanglixin1001
推荐于2016-02-15 · TA获得超过4174个赞
知道大有可为答主
回答量:1758
采纳率:80%
帮助的人:884万
展开全部
引用是什么?引用就是对象的另一个名字。通过使用引用形参,函数可以直接访问实参对象,而无须赋值它。
来看一个简单的例子。
Class A;
void A::copy(const A& a); 那么这里就a就是传递给a实参(假设为b)的别名。调用形式如aa.copy(b)。而如果copy函数声明为void A::copy(A a),程序需要在copy函数执行的时候重新构造一个临时对象a(使用A的复制构造函数)。这样会带来效率和空间上的损失。如果A这个类禁止了复制构造函数的使用 ,那么该调用会是错误的。
再来看看引用带来的其它好处:
1. 使用引用形参可以返回额外信息。 函数只能有一个返回值,那么需要返回多个内容的时候怎么办?可以使用引用形参来传递变量进行修改从而达成我们的目的。
2. 利用const引用避免复制。来看一个简单的例子:
bool isShorter(const string &s1, const string &s2) { return s1.size() < s2.size(); }
因为在程序中不需要修改实参的值,所以加上const可以避免复制,在函数体内任意对s1,s2进行修改的操作都是违法的。这样使用可以保证我们无意的修改实参,而这并非我们的本意。
3. 应该讲不需要修改的引用形参定义为const引用。普通的非const引用形参在使用时不太灵活。这样的形参既不能用const对象初始化,也不能使用字面值或产生右值的表达式实参初始化。
说了这么多,如有错误,请指出。希望能学好引用,写出效率更高更通用的代码。
寂寞海岛
2012-10-08
知道答主
回答量:12
采纳率:0%
帮助的人:2万
展开全部
类名应该是类的一个副本,你在成员函数中改变它不会改变被引用的对象,而类的引用则会改变原来被引用的对象。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
啡秀1A
2012-10-08
知道答主
回答量:63
采纳率:0%
帮助的人:9.1万
展开全部
亲,你能把问题说清楚点吗?洒家看不懂额!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友26ad406
2012-10-08 · TA获得超过1611个赞
知道大有可为答主
回答量:1506
采纳率:100%
帮助的人:1081万
展开全部
看你函数的功能了 有时候用引用有时候用类名
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
漆蓄0g6
2012-10-08 · 超过28用户采纳过TA的回答
知道答主
回答量:86
采纳率:0%
帮助的人:66.8万
展开全部
把问题说的详细一点啊。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式