谁能讲一下操作符重载的规则?

firehorizon 2001-11-16 01:24:50
比如说:一元操作符重载后还是一元的,二元的还是二元的。前置的还是前置的,后置的还是后置的。对“*”这个操作符重载,怎么知道我是重载乘法还是对地址取值?Essential C++(P120)上说:对操作符的重载,non-member运算符的参数列中,一定会比相应的member运算符多出一个参数,也就是this指针。对member运算符而言,这个指针隐喻代表左侧操作数!而如果我重载的是对地址取值的*操作符,左侧没有操作数啊????
...全文
280 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
ashchan 2001-11-22
  • 打赏
  • 举报
回复
Thinking in C++中有详细的范型和说明,去看一下吧,我还没学好。
fpgzs 2001-11-21
  • 打赏
  • 举报
回复
C++操作符重载,有点让人头疼呀!

````
chxr 2001-11-20
  • 打赏
  • 举报
回复
HI.我刚试了一下:
# include "iostream.h"

class base
{
private:
int Number;
public:
base(int i=10):Number(i){}
virtual ~base(){}

int * operator *();
};

int * base::operator *()
{
return &Number;
}

void main()
{
base a;
int *ptr=*a;
}
跟踪下来。运行结果正确。至于你说的“如果我重载的是对地址取值的*操作符,左侧没有操作数啊????”我认为位置的确定要根据重载的运算符本身来确定。
比如上面的你就不能写做a*.
kaqusa 2001-11-20
  • 打赏
  • 举报
回复
c++规定以下几个操作符不可重栽:
.,::,.*,.->,?:
LANDFISH 2001-11-20
  • 打赏
  • 举报
回复
guanzhu
chxr 2001-11-20
  • 打赏
  • 举报
回复
你看错了。不是*.是“.*" 成员指针。也就是:
int base::*p=&base::pubval;
base a;
a.*p=200..
gigix 2001-11-20
  • 打赏
  • 举报
回复
谁说*运算符不能重载的?如果*运算符不能重载,智能指针怎么实现?去看看auto_ptr的实现方法吧,STL里面有。
gigix 2001-11-19
  • 打赏
  • 举报
回复
看Effective C++和Design and Evolution of C++
Dontcry 2001-11-18
  • 打赏
  • 举报
回复
运算符重载要通过创建运算符函数operator()实现.
除了类的运算符重载还有类以外的运算符重载,例如*号可以定义成两个数复数的重载,这关键要看你的需要.
运算符函数可以定义为他将要操作类的成员(成员运算符重载),也可以定义为非类的成员,非成员的运算符函数大多是友员函数(友元运算符函数).
对成员运算符函数的双目运算符重载,他的参数表只有一个参数作为运算符的右操作数,当前对象为运算符的作操作数,它是通过this指针隐含的转地给函数的例如:
class A{

//.....
int operator +(A a);
};
而在友员运算符函数中的双目运算符重载需要两个参数
类库 2001-11-18
  • 打赏
  • 举报
回复
看看一些简单的c++书吧,你的那本可能太深了
swqs 2001-11-18
  • 打赏
  • 举报
回复
再一次强烈gz
lanying 2001-11-18
  • 打赏
  • 举报
回复
有过这方面经验的高手来看看吧
darkay 2001-11-17
  • 打赏
  • 举报
回复
look at something about iterator,there many examples about * operator and ->operator
Magical 2001-11-16
  • 打赏
  • 举报
回复
操作符重载,真的是很乱,我也没搞懂。
jkjium 2001-11-16
  • 打赏
  • 举报
回复
应该是编译器通过传递给被重载德操作符的参数来判断吧. 比如*被传了两个参数, 那么就认为你重载了乘法操作.就像不同参数的构造函数一样,编译器通过参数决定调用哪一个.
ccmouse 2001-11-16
  • 打赏
  • 举报
回复
这个是少数不可重载的操作符之一。
TyraelTiger 2001-11-16
  • 打赏
  • 举报
回复
我顶
firehorizon 2001-11-16
  • 打赏
  • 举报
回复
帮忙啊!!!!

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧