打印

返回值问题

[复制链接]
972|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xsgy123|  楼主 | 2012-12-23 09:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ARM, AI, ce, ic, ST
写了以下代码,目的是重载[]运算符, 编译运行没问题,但把11行的char&改成char时就会出问题,提示返回值不能做左值(23行操作).为什么呢

1 #include <iostream>
  2 using namespace std;
  3
  4 class array{
  5  public:
  6    array()
  7   {
  8     m_array[0] = '\0';
  9   }
10
11    char& operator[] (int a)
12   {
13     return m_array[a];
14   }
15
16  private:
17    char m_array[30];
18 };
19
20 int main()
21 {
22   array ar;
23   ar[0] = 'a';
24   cout << ar[0] << endl;
25 //  cout << ar << endl;
26 }

相关帖子

沙发
火箭球迷| | 2012-12-23 09:40 | 只看该作者
函数返回值如果不是指针或者引用不能作为左值被赋值

使用特权

评论回复
板凳
dfsa| | 2012-12-23 09:57 | 只看该作者
数组中的元素可以涉及到对其赋值,所以必须是原来元素的一个引用
如果返回原来元素的拷贝,则赋值操作不能成功

使用特权

评论回复
地板
无冕之王| | 2012-12-23 10:04 | 只看该作者
返回的临时变量是个右值,右值是不能被修改的,左值可以修改。非常引用是左值。

使用特权

评论回复
5
yybj| | 2012-12-26 16:47 | 只看该作者
LS的分析都很有道理

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

229

主题

2603

帖子

1

粉丝