小众知识

首页 > 正文

请教C++ primer问题(重载操作符)

总算看到重载操作符那一章,可对里面的介绍总弄不明白,哪位能谈谈重载操作符的用处,最好能举一个简单的例子。  

 ttlb 发表于:2003-10-26 08:28:40
得分:5 

操作符重载的意义在于使自定义类型具有了和内置类型(如int)具有了相同的行为,理解了这一点,操作俯冲在就没问题了。
比如,int i = 1; i += 2; date d; d += 2; 这两个应该具有相似的行为。 

 luhuayi 发表于:2003-10-26 08:47:04
得分:10 

class person
{
private:
   int age;
   char *name;
public:
    .
    .
    .
    friend ostream &operator <<(ostream &out,person&john);
    friend istream &operator >>(istream &in,person&john);
    person &operator+(person&john);
}
ostream &operator<<(ostream &out,person&john)
{
 out< return out;
}
istream &operator >>(istream &in,person&john)
{
in>>john.age>>john.name;
return in;
}
person& person::operator+(person&john)
{
   age+=john.age;
   return *this;
}
.
.
.
.
对于重载操作符的理解我认为关键抓住以下几点就行了:
1:我个人认为重载操作符是为了让程序更直观,更方便,因为我们最终是服务客户的.
2:重载操作符不能创造出新的操作符,也不能改变现有操作符的优先级别.
3:有些操作符象::,->等不能被重载.
4:重载操作符不能用于内置函数,象int opertor +(int a,int b)这样是不行的,参数中必须有一个是用户自定义类型.
5:重载操作符必须清楚什么时候返回引用,什么时候使用值返回.
粗陋之见希望对你有些帮助!

 carbon107 发表于:2003-10-26 15:43:02
得分:0 

说白了就是这样啊
比如   你定义了一个操作符为  +
int operator +(int a,int b);  这是为整型来设定的操作符
float operator +(float c, float d);这是为float型设定的操作符.
当你在main()里的实现的时
#include "iostream.h"
void main()
{
 int t=2 ,k=2, p;
 float m=3.5, n=3.5, q;
 p=t+k  //系统会找整型相加的操作符
 q=m+n  //系统会找float型相加的操作符

 ionlic 发表于:2003-10-27 01:21:55
得分:5 

主要就是便于交互。使自定义类型和内置类型看起来一样啦。

写几个就好了。真的。 

上一篇:求友散分
下一篇:【<专题讨论>[模板模式]<2>】成员模板和返回值重载

分享到: