2个回答
展开全部
Time 是传递值,所以首先会构造一个Time类,然后调用拷贝构造传值给它,
而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 。
类对象的传递一般情况最好不用传递值。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询