操作符重载

可以使用操作符,操作非默认类型的操作数。

同样的操作符执行不同的操作(操作其他类型的操作数),称为操作符重载

函数重载:用同样的函数,操作不同类型形参

操作符的重载不是自动的。如:Point  + Point//没有定义对Point类的+运算。

1、 只能重载已经存在的操作符(与函数重载不同),不能创造一个新操作符。

2、操作数的数目也应和原始定义一致 。1+2;Point + Point

3、至少有一个操作数,是用户自定义类型(Class)

4、 不能重载的4个操作符

    ::          scope resolution operator

    .            object member selection

    .*          pointer  to member  obj.*member//这三个都是指定对象的成员的

?:(:? error)        conditional expression

sizeof()

5、操作符重载后,也可以根据操作数的类型,选择与之匹配的操作符版本

 Person + Person       O.K.  int + int // Point + Point

 Person +int              O.K.

 int +int                     Not O.K sincethat would

                                           redefinemeaning of addition

                                           for primitives//不能对原生类型的运算做重定义

6、操作符重载后,优先级的顺序不变。

7、有三个操作符,不用重载,就可以用于所有类型的对象。

=     the assignment operator  but it should often be overloaded anyhow because of problems with dynamically allocated memory. (see later)

&    Address operator    &circle1  取地址

*     De-referencing operator: a unary operator  解引用

 

Point   p1;

Point p2 = p1;(浅拷贝赋值),

若对象有动态内存分配在堆空间上,还是需要重载赋值运算符

8、重载操作符时,操作数类型可以不同。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值