| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 576 人关注过本帖
标题:[求助]运算符重载问题
只看楼主 加入收藏
xbw0114
Rank: 1
等 级:新手上路
帖 子:141
专家分:0
注 册:2007-8-8
收藏
 问题点数:0 回复次数:6 
[求助]运算符重载问题

#include <iostream.h>

class TriNum{

int a[100];

int n;

int p, q;

public:

TriNum(int n=0, int p=0, int q=0){ this->n = n; this->p = p; this->q = q;}//这里this->n = n; this->p = p; this->q = q代表什么呀?

void process();

void Print();

friend istream& operator>>(istream& istr, TriNum&);

};

istream& operator>>(istream& istr, TriNum& tri)//这里是什么意思为什么要这样定义?为什么要定义为友员函数呀

{

cout << "请输入求值范围(p, q):";

cin >> tri.p >> tri.q;

while( tri.p<100 || tri.q < 100 || tri.p>999 || tri.q > 999 || tri.p>tri.q )

{

cout << "请输入求值范围(p, q):";

cin >> tri.p >> tri.q;

}

return istr;//这里返回的是什么值?

}

void TriNum::Print()

{

cout << "个数:" << n;

cout << "满足条件的数有:" ;

for( int i=0; i<n; i++) cout << " " << a[i] ;

cout << endl;

}

void TriNum::process()

{

int s, t1, t2, t3;

for( int i=p; i<=q; i++)

{

s = i / 11;

t3 = i/100; t2 = (i % 100)/10; t1 = i % 10;

if( s == t3*t3 + t2*t2 + t1*t1 )

{

a[n] = i;

n++;

}

}

}

void main()

{

TriNum tri;

cin >> tri;

tri.process();

tri.Print();

}

搜索更多相关主题的帖子: 运算符 重载 
2007-10-03 22:20
xbw0114
Rank: 1
等 级:新手上路
帖 子:141
专家分:0
注 册:2007-8-8
收藏
得分:0 
帮帮忙呀~~~

勤奋造就未来
2007-10-04 10:11
栖柏
Rank: 2
等 级:论坛游民
威 望:3
帖 子:1103
专家分:17
注 册:2007-8-23
收藏
得分:0 
TriNum(int n=0, int p=0, int q=0){ this->n = n; this->p = p; this->q = q;}//这里this->n = n; this->p = p; this->q = q代表什么呀?
构造函数,this指针就是指向类的对象
是该函数返回对调用该函数的对象的引用
istream& operator>>(istream& istr, TriNum& tri)//这里是什么意思为什么要这样定义?为什么要定义为友员函数呀
这句话我就不太明白你说的了
友元是允许将一个类的非公有成员授权给一个指定的函数或类使用
友元用friend关键字,只能出现在类定义的内部
return istr;//这里返回的是什么值?
引用形参直接关联到其所绑定的对象,向额外的主调函数返回额外的信息,也就是不止一个内容,在这里要返回cin
我初学有什么不对,请见谅

[此贴子已经被作者于2007-10-4 10:45:25编辑过]


You have lots more to work on! Never give up!c language!
2007-10-04 10:44
coachard
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:1251
专家分:0
注 册:2007-8-12
收藏
得分:0 
第一个问题:我实在不知道怎么解释好,这是类成员函数中的this指针。每个类成员函数的第一个参数必是隐藏着的this指针。。

第二个问题:你不定义成友员函数,你也可以定义为成员函数,不过操作起来很不方便。

第三个问题:istr是一个istream类型的引用,实参传进来的。为了可以和原来的>>符一样进行连续输入。

偶学编程,也许本身就是一个错。。。
2007-10-04 10:45
栖柏
Rank: 2
等 级:论坛游民
威 望:3
帖 子:1103
专家分:17
注 册:2007-8-23
收藏
得分:0 

补充一下,你看看楼上的回答吧,偶初学,还没看清你的问题
楼上帮忙解答


You have lots more to work on! Never give up!c language!
2007-10-04 10:47
远去的列车
Rank: 1
等 级:新手上路
威 望:2
帖 子:205
专家分:0
注 册:2007-8-7
收藏
得分:0 

[QUOTE]#include <iostream.h>
class TriNum{
int a[100];
int n;
int p, q;
public:
TriNum(int n=0, int p=0, int q=0){ this->n = n; this->p = p; this->q = q;}//这里this->n = n; this->p = p; this->q = q代表什么呀?
void process();
void Print();
friend istream& operator>>(istream& istr, TriNum&);
};[/QUOTE]

相当于:
[CODE]#include <iostream.h>
class TriNum{
int a[100];
int _n;
int _p, _q;
public:
TriNum(int n=0, int p=0, int q=0){ _n = n; _p = p; _q = q;}
void process();
void Print();
friend istream& operator>>(istream& istr, TriNum&);
};[/CODE]



C++学习
2007-10-04 11:28
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
问题1:私有成员和型参名字一样,为了区分加上this->表示是这个类的私有成员,this是一个指向当前类对象的隐藏指针。

问题2,3:参看“友员函数,友员类”,重载操作符号">>""<<"的形式可以硬记,以后你自然明白为什么要这样定义。

Fight  to win  or  die...
2007-10-04 12:28
快速回复:[求助]运算符重载问题
数据加载中...
 
   



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

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