什么时候使用const string&与const字符串

时间:2015-07-24 21:46:33

标签: c++ string const

我知道最好将const String引用作为参数传递给方法。

但是,如果我只需要在代码中使用String作为常量,那引用它还是更好吗?获取它的引用不仅仅是一个开销吗? 我可以在我们的代码库中的许多地方看到这一点,并且我试图理解为什么这是可取的。

string bar = "test";
const string& data = "FOO_" + bar; //why is this better than const string data?
insert(data)

函数insert带有引用,

void insert(const string& data)

同样的问题适用于以相同方式使用的任何const对象。

谢谢!

2 个答案:

答案 0 :(得分:1)

C ++中的引用应该被视为现有变量的别名。如果您有一个已存在的变量,并且您希望通过其他别名(名称)访问,则使用引用。

当您希望将现有变量(内存位置)作为函数的参数引用时,这在函数调用中最常见。如果您不想将副本传递给函数,而是希望将现有变量传递给使用引用时新名称下的函数。

同样,当您希望类引用已存在的变量时,请使用引用。

参考'应该'总是指现有的变量。

答案 1 :(得分:1)

const string data = "FOO_" + bar;

创建一个临时文本并将她作为参数传递给data的复制文件。创建两个字符串实例,复制并销毁一个实例。

const string& data = "FOO_" + bar;

创建一个临时的但是将她指定为data,因此她不再是临时的。创建了一个实例,而不是更多。