精品C++浓缩精华知识点---运算符重载与赋值重载与const成员函数

运算符重载

C++ 为了增强代码的可读性引入了运算符重载 ,运算符重载是为了实现一些特殊的运算,比如对比两个日期的大小,用><是不能直接比较,为了使运算符满足我们特殊的要求,引入了运算符重载。什么是运算符重载?为了比较两个日期的大小,按照自己的要求写了一个比较函数,分别按照年月日进行比较,按照原来的方法,只能进行函数调用,但是使用C++的运算符重载就可以大大增加可读性,运算符重载之后,普通的运算符就相当于调用函数,简单的符号代表着更加复杂的含义。运算符重载其实就是运算符的重定义,按照自己的要求定制运算符,然后选一个常见的运算符来代表它。

运算符重载是具有特殊函数名(函数名是operator>)的函数 ,也具有其返回值类型,函数名字以及参数列表,其返回值类型与参数列表与普通的函数类似。 运算符重载函数: 返回类型+ operator +要重载的操作符(参数列表)

注意:

1.不能通过连接其他符号来创建新的操作符:比如operator@

2.重载操作符必须有一个类类型参数。

3.用于内置类型的运算符,其含义不能改变,例如:内置的整型+ ,不 能改变其含义。

4.作为类成员函数重载时,其形参看起来比操作数数目少1 ,因为成员函数的第一个参数为隐藏的this指针。顺序不能换,第一个形参是第一个实参的this指针,第二个形参就是第二个实参

5.  .* :: sizeof ?: . 注意以上5 个运算符不能重载。

6.不能改变操作符的操作数的个数,一个操作符原来是几个操作数,重载后也是几个参数

通过运算符重载,以下表达式就能表达出d1大于d2

d1>d2;//等价于d1.operator>(d2)

以我们想要的方式来定义运算符,这种方式大大增强了代码的可读性。

赋值重载函数

赋值重载:两个已经存在的对象进行拷贝

构造,析构,拷贝构造,赋值重载,都是默认成员函数,凡是涉及资源清理的类,都需要自己写拷贝构造和赋值重载,而且必须是深拷贝的。只有像myqueue这样的类里面都是自定义类型,不用写这些成员函数,每个成员都是调用各自的成员函数就行。真正比较重要的是自动调用,每个类对象都自动调用这些成员函数

const成员函数

const Date* this,const形参this指针,只能写到成员函数的后面

const对象调用函数的时候,只能传给const*this做形参的成员函数,因为权限不能放大

只读函数都可以在后面加const,就是内部不涉及修改类成员的都是只读

用途举例

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值