什么时候使用 const string& 与 const string 比较好
When is it better to use const string& versus const string
我知道最好将 const String 引用作为参数传递给方法。
但是,如果我只是需要在代码中使用一个String作为常量,还是引用它比较好?获取对它的引用不只是开销吗?
我可以在我们的代码库中的许多地方看到这一点,我试图理解为什么这是可取的。
string bar = "test";
const string& data = "FOO_" + bar; //why is this better than const string data?
insert(data)
函数插入引用,
void insert(const string& data)
同样的问题将适用于以相同方式使用的任何 const 对象。
谢谢!
C++ 中的引用应被视为现有变量的别名。当您有一个变量已经存在并且您希望通过不同的别名(名称)访问时,您可以使用引用。
当您想引用现有变量(内存位置)作为函数的参数时,这在函数调用中最常见。如果您不想将副本传递给函数,而是想将一个已经存在的变量传递给使用引用的新名称下的函数。
同样,当您希望 class 引用一个已经存在的变量时,您可以使用引用。
引用 'should' 始终引用现有变量。
const string data = "FOO_" + bar;
创建一个临时对象并将其作为参数传递给 data
的复制构造函数。创建两个字符串实例,进行复制并销毁一个实例。
const string& data = "FOO_" + bar;
创建一个临时的但将她分配给名称 data
,因此她不再是临时的。创建了一个实例,而不是更多。
我知道最好将 const String 引用作为参数传递给方法。
但是,如果我只是需要在代码中使用一个String作为常量,还是引用它比较好?获取对它的引用不只是开销吗? 我可以在我们的代码库中的许多地方看到这一点,我试图理解为什么这是可取的。
string bar = "test";
const string& data = "FOO_" + bar; //why is this better than const string data?
insert(data)
函数插入引用,
void insert(const string& data)
同样的问题将适用于以相同方式使用的任何 const 对象。
谢谢!
C++ 中的引用应被视为现有变量的别名。当您有一个变量已经存在并且您希望通过不同的别名(名称)访问时,您可以使用引用。
当您想引用现有变量(内存位置)作为函数的参数时,这在函数调用中最常见。如果您不想将副本传递给函数,而是想将一个已经存在的变量传递给使用引用的新名称下的函数。
同样,当您希望 class 引用一个已经存在的变量时,您可以使用引用。
引用 'should' 始终引用现有变量。
const string data = "FOO_" + bar;
创建一个临时对象并将其作为参数传递给 data
的复制构造函数。创建两个字符串实例,进行复制并销毁一个实例。
const string& data = "FOO_" + bar;
创建一个临时的但将她分配给名称 data
,因此她不再是临时的。创建了一个实例,而不是更多。