This question already has answers here:
What's the difference between passing by reference vs. passing by value?
                                
                                    (15个回答)
                                
                        
                                3年前关闭。
            
                    
我是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++ - c++为什么要使用引用? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40907513/

10-17 01:33