对于C++有返回值的函数来说,其返回值的类型可以是值类型,也可以是引用类型。
1 返回值为值类型的函数
使用临时对象(temporary object)来保存函数的返回值。函数的返回值用于初始化调用点的一个临时对象,该临时对象就是函数调用的结果。如
- int func()
- {
- return 1;
- }
- int i = func();
- char get_val(string& str, int index)
- {
- return str[index - 1];
- }
- string str = "12345";
- char ch = get_val(str, 1);//ch的值是’1’
- get_val(str, 1) = 'a';//编译时报错,error C2106: “=”: 左操作数必须为左值
2 返回值为引用类型的函数
当函数的返回值是引用类型时,其返回值即为return的变量,所以不需要临时对象保存其返回值。所以,对于返回值为引用类型的函数,其返回值为左值。
- char& get_val(string& str, int index)
- {
- return str[index - 1];
- }
- string str = "12345";
- char ch = get_val(str, 1);//ch的值是’1’
- get_val(str, 1) = 'a';//此时str的值为”a2345”