运算符重载

运算符重载

1、什么是友元?友元的存在形式有?友元有何特点?

  1. 友元:一般来说,类的私有成员只能在类的内部访问,类之外是不能访问它们的。但如果将其他类或函数设置为类的友元(friend),就可以访问了。
  2. 存在形式:友元函数(可设为全局函数或成员函数)和友元类
  3. 特点:友元的声明不受public/protected/private关键字的限制。友元的存在,使得类的接口扩展更为灵活,使用友元进行运算符重载从概念上也更容易理解一些,而且, C++ 规则已经极力地将友元的使用限制在了一定范围内,它是单向的、不具备传递性、不能被继承,所以,应尽力合理使用友元。

2、运算符重载的原则是什么?有哪些规则?

  1. 原则:自定义类型的数据的操作与C++内置的数据类型的数据的操作形式一致

  2. 规则:

    1、重载的运算符的操作至少有一个是自定义类型或枚举类型,即:两个内置类型不能

    2、优先级与结合性不变

    3、不会改变运算规则,操作数个数,顺序

    4、重载运算符不能有默认参数

    5、重载逻辑运算符(&& ||)后不再具备短路求值特性

    6、不能臆造不存在的运算符

3、不能重载的运算符有哪几个?

  1. 成员访问符 .
  2. 成员指针运算符 .*
  3. 域运算符 ::
  4. 条件运算符 ?:
  5. 长度运算符 sizeof

4、运算符重载的形式有哪几种?

  1. 以普通函数形式,需要get函数支撑。
  2. 以友元函数的形式
  3. 以成员函数的形式

5、自增运算符的前置形式和后置形式有什么区别?返回值类型分别是什么?

  1. 自增自减运算符常采用成员函数的形式重载,根据前置和后置分为两种形式。

  2. C++ 根据参数的个数来区分前置和后置形式。如果按照通常的方法(成员函数不带参数)来重载 ++/–运算符,那么重载的就是前置版本。要对后置形式进行重载,就必须为重载函数再增加一个 int 类型的参数,该参数仅仅用来告诉编译器这是一个运算符后置形式,在实际调用时不需要传递实参。

  3. 前置形式返回的是*this(左值),所以为提高效率,返回类类型的引用。而后置形式返回的是一个临时对象(右值),返回类型是类类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值