<分区>
我是 C++ 新手,我正在开发一个模拟电话簿的程序。现在,对于插入操作,函数定义如下:
void PhoneBook::insert(const string& name, const string& number)
但如果我删除引用符号,它仍然有效并插入触点。所以,我在这里有点困惑,为什么我需要它们?
void PhoneBook::insert(const string name, const string number)
<分区>
我是 C++ 新手,我正在开发一个模拟电话簿的程序。现在,对于插入操作,函数定义如下:
void PhoneBook::insert(const string& name, const string& number)
但如果我删除引用符号,它仍然有效并插入触点。所以,我在这里有点困惑,为什么我需要它们?
void PhoneBook::insert(const string name, const string number)
最佳答案
void PhoneBook::insert(const string name, const string number)
在这里,您正在使用所有数据的拷贝构造新字符串。这是繁重的操作。
void PhoneBook::insert(const string& name, const string& number)
这里传递的是对字符串的引用(字符串的地址),其大小通常为 4 或 8 个字节,基于平台,这是非常轻量级的操作。
此外,当您传递引用时,您可以与传递给函数的对象进行交互。
经验法则 - 如果变量大于 8 字节并且您不需要显式复制对象,则始终通过 const 引用传递。
关于c++ 为什么要使用引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40907513/