| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 372 人关注过本帖
标题:C++关于返回值的问题
只看楼主 加入收藏
lizjohn
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2010-10-28
结帖率:70.59%
收藏
已结贴  问题点数:20 回复次数:2 
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;


}

2011-05-08 10:21
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
很复杂!!

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-05-08 10:22
tisyang
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:132
专家分:737
注 册:2011-5-7
收藏
得分:20 
a[0]=1;
a[1]=2;
a[2]=3;

这三句要求 Array::operator [](int x) 这个操作符返回左值(变量内容可以改变的),但是事实上 你所写的 Elemtype Array::operator [](int x) 返回的是一个右值(变量内容不能改变),所以这三句语句非法了。
返回引用是为了可以修改其变量,如果只返回值的话,这些操作就相当于对一个临时只读变量赋值了。

C++ 用无参数构造函数生成对象时候请勿在构造函数后添加无用的那一对括号,否则有可能会被当成函数声明而忽略,嗯,栈上构建的时候就是这样。
2011-05-08 10:37
快速回复:C++关于返回值的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030764 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved