首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

c++ 引述求指点

2012-07-30 
c++ 引用求指点啊#includeiostreamusing namespace stdchar &get( string &s,string::size_type ix){re

c++ 引用求指点啊
#include<iostream>

using namespace std;
  char &get( string &s,string::size_type ix){
  return s[ix];
}
int main(){
  string r("some value");
  get(r, 0)='l';
  cout <<r<<endl;
  return 0;
}
//问题1:为什么 char get( string &s,string::size_type ix){...};这里为什么一定要返回一个引用呢??
//问图2:改成 char &get(const string &s,string::size_type ix) 为什么会报错呢?接收的 string r 不能算不需要修改的常量吗?

[解决办法]
问题1:返回的引用是左值。
问题2:如果s是const string&,那么s[ix]不能隐式转换为char&。
[解决办法]
楼主把我搞蒙了。
char get( string &s,string::size_type ix){...};这里为什么一定要返回一个引用呢??
我觉得你没有定义返回引用类型啊?
按照你的程序来看是返回了引用类型,那是因为你把函数作为左值来处理的,需要可以被赋值,你只能返回一个引用。
第二个加了const后,string s就不允许被修改,而你的程序返回引用后就修改了s[x]的值,这肯定会出错的嘛

热点排行