值参数,在函数执行前会调用一次拷贝构造函数初始化这个临时对象。 func(A)
引用参数,不产生一个临时对象来保存对象信息,不调用拷贝构造函数。 func(A&)
值返回,会产生一个临时对象(返回),并执行一次拷贝构造函数。 A func()
引用返回,不需要创建临时对象来保存对象信息(直接返回自身对象的引用),不调用拷贝构造函数。 A& func()
//不能返回局部参数的引用 A& func(A a) { return a; }
//如果有临时对象有一个引用,那么这个临时对象的生存周期可延长至和这个引用相同。 A func(A(&) a) { return a; } const A& a2 = func(a1);