C++中,const与&修饰函数形参的可能情况有四种;C语言中,情况只有1)和3)两种。
-
string str
这是最普通的传值调用,首先对原str进行一次拷贝,会调用拷贝构造函数。str可以被修改,但修改的只是复制的值,而不会影响到本身的str。 -
string &str
这是引用,传递过来的就是str本身,在函数里修改str的话都会修改str本身,但不会调用拷贝构造函数。 -
const string str
传值调用,str是复制的值且不能被修改,但会调用拷贝构造函数。 -
const string &str
引用传递,str不能被修改,而且也不会调用拷贝构造函数。
数组作为函数形参时,不能用const或者&修饰,而且在函数中修改数组的值会影响到数组本身。