这是一道习题
还真不容易找到这样的例子。
不过,在肯定会修改实参内容,而这种修改又不能影响原变量的情况下,比较适合不用引用吧。
比如:
bool read_file_in(string path, const string &file, string &out) { path += "/" + file; return read_file(path, out); } bool write_file_in(string path, const string &file, const string &in) { path += "/" + file; return write_file(path, in); } //... string path, data; //... read_file_in(path, "in.txt", data); write_file_in(path, "out.txt", data);
在上面的例子中,第一个参数 path 是不是不用引用更好一些?
hibernake说的是对的,我的例子不合适
当使用非常量引用,而实参是字面值、表达式、需要转换的不同类型的对象时。如void swap(int &a,int &b);int a=2;double b=3.0;f(a,5);f(a+2,a);f(a,b);都不行。也不能用const int&,因为要交换a与b的值。
还真不容易找到这样的例子。
不过,在肯定会修改实参内容,而这种修改又不能影响原变量的情况下,比较适合不用引用吧。
比如:
在上面的例子中,第一个参数 path 是不是不用引用更好一些?
hibernake说的是对的,我的例子不合适
当使用非常量引用,而实参是字面值、表达式、需要转换的不同类型的对象时。如
void swap(int &a,int &b);
int a=2;
double b=3.0;
f(a,5);
f(a+2,a);
f(a,b);
都不行。也不能用const int&,因为要交换a与b的值。