C++关于返回值的问题
为什么我的Elemtype& Array::operator [](int x)这个函数只能返回引用,如果我改成Elemtype Array::operator [](int x)就显示有错!error C2106: '=' : left operand must be l-value。这是为什么?以下是我代码的主体部分(动态数组类),程序代码:
[color=#0000FF]#include"Array.h" Array::Array()//默认构造[/color] { size=0; ptr=0; } Array::Array(int s)//构造 { ptr=new Elemtype[s]; size=s; } Array::Array(Array &p) { ptr=new Elemtype[p.size]; size=p.size; for(int i=0;i<size;i++) ptr[i]=p.ptr[i]; } int Array::getlength() { return size; } Elemtype& Array::operator [](int x)//运算符重载 { return ptr[x]; } Array::moveall() { delete []ptr; ptr=0; } Array::~Array() { moveall(); } 下面是main函数部分 #include<iostream> using namespace std; #include"Array.h" void main() { int i; Array a(3); a[0]=1; a[1]=2; a[2]=3; for(i=0;i<a.getlength();i++) cout<<a[i]<<endl; }