C++运算符重载中()的理解有点问题。 5

#include<iostream.h>classCArray{private:introw,cols;double*element;public:CArray(intr... #include<iostream.h>
class CArray
{
private:
int row,cols;
double *element;
public:
CArray(int r, int c)
{
rows=r;cols=c;
element=new double[r*c];
}
~CArray()
{
delete[]element;
}
double &operator()(int, int);
};
double &CArray::operator()(int r, int c)
{
return *(element+(r-1)*cols+c-1);
}
void main()
{
CArry a(3,4);
int i,j;
for(i=1;i<=3;i++)
for(j=1;j<=4;j++)
a(i,j)=i*j;
for(i=1;i<=3;i++)
{
for(j=1;j<=4;j++)
cout<<a(i,j)<<" ";
cout<<endl;
}
}

这个程序如果没有加() 符的重载我就懂了。可惜他加了。请问
double &CArray::operator()(int r, int c)
{
return *(element+(r-1)*cols+c-1);

返回的是什么啊,怎么搞的。。还是我的问题出在哪里了?

一级啊,想学的多,呵呵
展开
 我来答
Fixend
2006-10-26 · TA获得超过1978个赞
知道小有建树答主
回答量:710
采纳率:0%
帮助的人:1108万
展开全部
它是在重载()操作符
如果CArray array;
array(r, c)
它就会运行。
返回的是double型的引用
有点像double d[10][10];
然后d[i][j];
一般我们不这样,而是另建一个函数Item(int r, intc)
不过调用就变成array.Item(r, c)了,没有上面方便,但更清晰

明白了就加分啊,我今天要升级。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式