猿问

为什么通过const引用而不是按值传递?

据我了解:当您按值传递时,该函数将对传递的参数进行本地复制并使用该参数;当函数结束时,它将超出范围。当您通过const引用传递时,该函数将使用对无法修改的传递参数的引用。但是,我不理解为什么一个人会选择一个而不是另一个,除非需要修改和返回一个参数。如果您有一个void函数,什么也没有返回,为什么要选择一个?

编辑:因此基本上通过const引用传递避免复制对象。那么在什么情况下复制对象是好的?我的意思是,为什么不始终使用const引用,如果它始终可以优化性能呢?


至尊宝的传说
浏览 752回答 3
3回答

萧十郎

在某些情况下,复制对象可能会极大地影响性能。考虑一个函数,该参数将是一个参数,std::vector<long>并且您想要传递带有一百万个元素的向量。在这种情况下,您将要在通过值传递时使用const引用。在这个SO问题中,您可以找到关于问题的简单一般规则。
随时随地看视频慕课网APP
我要回答