《C++程序设计》笔记之-运算符重载
来源:互联网 发布:ip端口绑定域名 编辑:程序博客网 时间:2024/04/30 21:39
运算符重载实际上是函数的重载
函数类型 operate 运算符名称 (形参表)
Complex operate + (Complex &c2)
不能重载的运算符5个: sizeof 、 .(成员访问运算符)、 *(成员指针访问运算符)、 ::域运算符、 ?:条件运算符
1、重载不能改变操作对象个数
2、重载不能改变优先级原则
3、重载不能改变运算符结合性(左结合或右结合)
4、函数参数至少有一个是类对象或其引用,不能全是标准类型
Vc++提供的不带后缀.h 的头文件不支持把运算符重载函数作为友元函数,老版本带.h的头文件支持。gcc都支持
究竟把运算符重载函数作为类的成员函数好,还是友元函数好? 参考标准: (友元会破坏封装,尽量用成员函数)
复制运算符=、 下标运算符[ ]、函数调用运算符()、成员运算符->、 必须作为成员函数
流插入<< 和流提取 >>只能作为友元函数
一般将单目运算符和复合运算符重载为成员函数,将双目运算符重载为友元函数
重载插入流<< 和提取流>>
istream & operate >>(istream &, 自定义类 &);
ostream &operate << (ostream &,自定义类 &);
friend ostream & operate << (ostream &, Complex &);
ostream & operate << (ostream & output, Conplex &c)
{
output << c.real<< "+" << c.image<<"i"; //重载输出复数
return output; //cout通过地址传给output,也即返回cout
}
cout<<c3<<c2; //先执行cout<< c3 第一个参数和函数类型必须是ostream类型的引用,就是为了连续输出
重载运算符只能作用于一个指定类,不是应用于所有类
强制类型转换: 类型名(数据) int (9。2)
int i =6;
i = 7.5 + i; //i先转换为double型,得到的结果再转化为int型
转换构造函数:将一个其他类型数据转化为类的对象。只有一个形参、
默认构造函数:Complex();
用于初始化的构造函数;Complex(int,a int b);
用于复制对象的构造函数:Complex(Complex &c); //形参为本类对象的引用
转换构造函数:Complex(int a){real = a; image = 0;} //将int型参数a转化为类对象
c = c1 +Complex(1)
也可以将一个类转化为构造函数所在类
Teacher(Student &s){num = s.num; strcpy(name,s.name);sex = s.sex;} //将学生类对象转化为teacher类对象
s中name、num、sex必须为公用成员,否则不能被类引用
类型转化函数:将一个类的对象转化为另一个类型数据
operate 类型名() { }
operate double() {return real;} 函数名为operate double 和运算符重载一样operate +
类型转化函数只能作为成员函数,不能作为友元函数
- 《C++程序设计》笔记之-运算符重载
- 【笔记-C++】 运算符重载
- PKU C++程序设计实习 学习笔记4 运算符重载
- 面向对象与C++程序设计-运算符重载学习笔记
- 《Inside C#》笔记(十一) 运算符重载
- C++程序设计(9)之运算符重载
- 【C++】C++大数之运算符重载
- 【C++】之【运算符重载函数】
- C++学习笔记之运算符重载
- swift学习笔记之运算符重载
- C++笔记之 运算符重载
- c++学习笔记之运算符重载
- C语言之重载运算符()/[]/++/->等运算符
- C++-运算符重载
- [C++]重载运算符
- C#:运算符重载
- c++-++运算符重载
- C++:重载运算符
- java无难事笔记(二)
- 基于DCT系数的实时监控中运动目标检测
- std::unique与结构体
- 内存泄露
- Pascal's Triangle
- 《C++程序设计》笔记之-运算符重载
- 面向对象、代码块
- (Android) Download Images by AsyncTask API
- 网站建设中的三个核心要素
- JS贪吃蛇游戏
- Hibernate(六)——多对多关联映射
- 如何做好企业网站
- hdu 1823 Luck and Love(线段树)
- Locale类(一)