C++学习记录 7

回顾:
1 拷贝构造和拷贝赋值
1)浅拷贝和深拷贝
2)拷贝赋值操作符函数
a = b;//a.operator=(b)

2 静态成员
1)静态成员变量,全局区
2)静态成员函数,没有this指针

3 单例模式
1)私有构造函数
2)通过静态成员变量来维护唯一的单例对象
3)通过静态成员函数获取单例对象
4)创建方式:饿汉式、懒汉式

4成员指针 //了解

今天
二十 操作符重载
1 双目操作符重载:L#R
1.1 计算类双目操作符,+ - * …
–>表示的结果是右值,不能对表达式结果再赋值
–>左右操作数既可以是左值,也可以右值
–>两种实现方式:
1)成员函数形式(左调右参) 左操作数是调用对象
形如L#R的表达式可以被编译器处理成L.operator#®成员函数调用形式,该函数的返回结果就是表达式的结果.
2)全局函数形式
形如L#R的表达式也可以被编译器处理成operator#(L,R)全局函数调用形式,该函数的返回结果就是表达式的结果
注:使用friend关键字将一个全局函数声明为某个类的友元,友元函数可以访问类中任何成员.

1.2 赋值类双目操作符,+= -= …
–>表达式结果是左值,就是左操作数自身
–>左操作数一定是左值,右操作数可以是左值也可是右值
–>两种实现方式
1)成员函数形式
L#R ==> L.operator#®;
2)全局函数形式
L#R ==> operator#(L,R);

2 单目操作符 #O
2.1 计算类单目操作符:~ -(取负)
–> 表达式结果是右值,不能对表达式结果再赋值
–> 操作数可以是左值也可以是右值
–> 两种实现方式
1)成员函数形式 #O ==> O.operator#()
2)全局函数形式 #O ==> operator#(O)

2.2 自增减单目操作符:++ –
1)前缀++、–
–》表达式结果是左值,就是操作数自身
–》操作数一定是左值
成员函数形式:#O ==> O.operator#()
全局函数形式:#O ==> operator#(O)

2)后缀++、–
–》表示式结果式右值,是操作数自增减前的副本
–》操作数一定是左值
成员函数形式:O# ==> O.operator#(int/哑元/)
全局函数形式:O# ==> operator#(O,int/哑元/)

4输出和输入操作符重载
功能:实现自定义类型的对象直接输出和输入
注:只能使用全局函数的形式

friend ostream& operator << (ostream& os, const RIGHT& right);
friend istream& operator << (istream& is, RIGHT& right);

ostream //标准输出流类
istream //标准输入流类

// cout.operator << (a)
cout << a ;
cin >> a ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值