社区
C语言
帖子详情
谁能讲一下操作符重载的规则?
firehorizon
2001-11-16 01:24:50
比如说:一元操作符重载后还是一元的,二元的还是二元的。前置的还是前置的,后置的还是后置的。对“*”这个操作符重载,怎么知道我是重载乘法还是对地址取值?Essential C++(P120)上说:对操作符的重载,non-member运算符的参数列中,一定会比相应的member运算符多出一个参数,也就是this指针。对member运算符而言,这个指针隐喻代表左侧操作数!而如果我重载的是对地址取值的*操作符,左侧没有操作数啊????
...全文
280
18
打赏
收藏
谁能讲一下操作符重载的规则?
比如说:一元操作符重载后还是一元的,二元的还是二元的。前置的还是前置的,后置的还是后置的。对“*”这个操作符重载,怎么知道我是重载乘法还是对地址取值?Essential C++(P120)上说:对操作符的重载,non-member运算符的参数列中,一定会比相应的member运算符多出一个参数,也就是this指针。对member运算符而言,这个指针隐喻代表左侧操作数!而如果我重载的是对地址取值的*操作符,左侧没有操作数啊????
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
帮忙啊!!!!
Drools7.x入门到动态数据库配置
本课程的只
讲
解drools的用法,不
讲
什么实战、项目什么的,适合零基础、有工作经验的开发人员 课程如下: 1、
规则
引擎介绍 2、Drools入门案例 3、
规则
引擎底层介绍 4、Drools匹配模式 5、Drools比较
操作符
6、Drools...
c++学习笔记--
操作符
重载
一、
操作符
重载
概念(1)什么是
重载
(2) 为什么要
操作符
重载
(3)
重载
的几种方式二、operator关键字三、
操作符
重载
(1)赋值运算符
重载
(2)自增自减运算符
重载
(3)输入输出
操作符
重载
一、
操作符
重载
概念 (1)...
C++
操作符
重载
手册
C++
操作符
重载
手册 http://www.adintr.com/myarticle/operator.html by adie Dec,2005 一、
重载
规则
I.可以
重载
的
操作符
+ - * / % ^ & | ~ ! = > += -= ...
python加法运算符
重载
_python3代码中如何实现加法
重载
?
小编在这里跟大家
讲
讲
操作符
重载
,可能有些人听到这个很长的词比较陌生,我们继续往下深入学习。Python支持
操作符
重载
。“
操作符
重载
”其实是个简单的概念,你是否曾经想过为什么Python可以让你使用“+”
操作符
来...
C++基础学习笔记----第十三课(
操作符
重载
-下)
类的成员函数进行
操作符
重载
基本概念 类的成员函数也可以进行
操作符
的
重载
。类的普通成员函数是被C++编译器默认的隐藏了一个默认的参数this指针,这里的这个this指针指向的是当前的对象。所以在使用类的成员函数...
C语言
69,371
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章