1 c++标准中没有所谓的“c++为什么返回引用的函数的形参也必须是传引用”的规定。
2 在你的例子里(很奇怪的用法,为什么不直接 cp1 = cp2;呢),不能去掉"&"的原因如下:
如果没了参数的"&",那么这个ReturnMe函数所做的事情就是将cp1复制给临时对象a, 然后返回a的引用,之后相当于a = cp2; 再之后过了这一行,a 的生命周期完结了。 而cp1本身自然不受影响。
PS: 如果你对“生命周期”或者 返回局部对象的引用 这些概念不熟悉的话,请参阅 effective c++(这本薄书看明白了,那baidu c++ 区的绝大多数问题都难不住你了)
这是由你的程序目的决定你需要在这里使用引用,并不是说C++规定函数必须有引用参数才能返回引用类型的值。