为什么通过引用传递字符串并使其成为常量?

use*_*437 2 c++

只是一个普遍的问题,一个函数的签名是:

void f( const string & s )...
Run Code Online (Sandbox Code Playgroud)

如果您实际上没有更改字符串(因为它是常量),为什么有必要通过引用传递它?

das*_*ght 6

通过引用传递有两种方法 - 通过指针传递,并通过值传递.

通过指针传递类似于通过引用传递:可以为它做出"如果你不想修改它,为什么传递指针"的相同参数.

通过价值传递需要复制.复制字符串通常更昂贵,因为需要在封面下分配和取消分配动态内存.这就是为什么传递const引用/指针通常比传递您不打算更改的副本更好.