C++面向对象程序设计 操作符重载

操作符重载与顶层函数

不能被重载的运算符包括 条件运算符?: 成员选择符. 成员对象指针操作符* 作用域运算符::

除了赋值操作符=之外,基类中所有被重载的操作符都将被派生类继承。

对操作符的重载不改变操作符的优先级和结合性。重载不改变操作符的语法。

以顶层函数形式被重载的操作符必须在它的参数表中包含一个类对象。例如:

C operator+(const C &c1,const C &c2){}内存管理操作符除外。

下标操作符[]、赋值操作符=、函数调用操作符()和指针操作符->必须以类成员函数的形式进行重载。

使用顶层函数进行重载时非对象操作数可以出现在操作符的左边,而使用类成员函数时,第一个操作数必须是类的对象。

友元函数

一个类的friend函数可以访问该类的私有成员和保护成员,但该friend函数不是类的成员函数。

friend函数不仅可以是顶层函数,也可以是另一个类中的成员函数。

一个函数同时被多个类声明为friend这样就可以引用多个类中的私有数据。

可以将一个类声明为另一个类的friend。

friend的关系是单向的,不能传递,不符合面向对象原则,建议仅在重载操作符时使用。

输入输出操作符的重载

赋值操作符重载

如果一个类的数据成员中有指向动态分配空间的指针,通常应定义拷贝构造函数并重载赋值操作符。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值