c++里面 这两句有什么区别 void display(Time); void display(Time &);

Time是一个类... Time 是一个类 展开
 我来答
lijunhuiplc
2012-12-19 · 超过13用户采纳过TA的回答
知道答主
回答量:101
采纳率:0%
帮助的人:31.7万
展开全部
这两个函数在C++里面叫函数的重载,他们的函数参数不同;
void display(Time time1)
{
}
这个函数在调用时,只能穿递Time类变量的值,包括类成员,和类成员函数;
但是它不能修改传递进来的time1变量的指针所指向的值
void display(Time &time2)
{
}
这个函数在调用时,传递的是Time类变量的指针地址,
通过调用该函数,可以修改time2变量的类成员的属性。
欢乐多Ek
2012-12-19 · TA获得超过478个赞
知道小有建树答主
回答量:477
采纳率:0%
帮助的人:418万
展开全部
Time 是传递值,所以首先会构造一个Time类,然后调用拷贝构造传值给它,
而Time& 是传递引用,所以只会构造一个Time引用,效率更高。
追问
意思就是  运行结果没有什么不同,效率引用更高,这样理解对不对
追答
不完全对,如果要对原值进行修改只能用第二种,如果要用传进去的参数的话最好保证重写了拷贝构造函数,举个例子:
class A
{
public:
char *buffer;

};
void Func(A obj)
{
strcpy(obj.buffer,"Hellow");
}

int main()
{
A obj;
obj.buffer=new char[16];
strcpy(obj.buffer,"World");
cout<<obj.buffer<<endl;
Func(obj);
cout<<obj.buffer<<endl;
return 0;
}

输出:
World
Hellow

这就是典型的没有拷贝构造传值,结果可能会是灾难性的,也就是你本来想传进去用一下,却更改了原值。

所以总结起来:
传值的话结果可能会有变化,传递引用保证是传进去那个值。
如果需要修改实际参数,传递引用。
如果只需要用实际参数而不修改,传递const 引用。
如果是built-in类型最好传递参数,比如int long 。
类对象的传递一般情况最好不用传递值。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式