C++ PP Chapter XI 使用类
2016-07-17 15:04
260 查看
1. 运算符重载(多态) 运算符函数格式: operator op(arguemnt-list) 例如: operator[](..) //[]是数组索引运算符 对time 类重载运算符 + ,该运算将接受另一个time对象 返回time对象 time time::operator+(const time & T) const { time sum; ... return sum; } 那么对于time对象 A,B 就可以直接执行 time C = A + B 这样的运算,但是注意对应于列表的顺序! 同符多义的基本运算符可以多义重载(每种重载都对应于此前的句法) 比如 - 运算具有两种解释 2. 运算符重载限制: a. 重载运算符必须有一个操作数是用户定义的类型 b. 使用运算符时不能违反运算符原本的句法规则(单、双目运算符), 也不能改变优先级 c. 不能创建新的运算符 d. 不能重载: sizeof 、.*(成员指针运算符)、::、?:、typeid(RTTI运算符) const_cast 、dynamic_cast 、reinterpret_cast 、static_cast (强制转换运算符) e. 只能通过成员函数重载: = 、 () 、 [] 、 -> 3. 友元 分为三种: a. 友元函数 b. 友元类 c. 友元成员函数 友元函数: 解决了 不能重载运算符解决 (double) 2.5 * (time) B 这样顺序的问题 I、创建友元函数 首先需要在类声明中放入原型,并在原型声明前加上关键字 friend 例如: friend Time operator*(double m,const Time & t); II、编写函数的定义 注:类的友元函数是非成员函数,其访问权限与成员函数相同 常用的友元:重载运算符 << 推荐方法 : ostream & operator<<(ostream &os,const className & obj) { os<< ...; return os; } 4. 类的自动转换和强制转换类型(C++ P 笔记)
相关文章推荐
- Rotate Image
- C++智能指针 相关知识
- C++异常处理基础
- leetcode_c++:链表:Remove Duplicates from Sorted List (083)
- 《C++ Primer Plus》第17章 输入、输出和文件 学习笔记
- cccc
- C++异常处理机制
- C++应用程序性能优化——C++语言特性
- Permutations
- Jump Game II
- L1-028. 判断素数
- [32/64]关于DLL注入与Hook(minihook)的简单介绍与使用
- 值得学习的C语言开源项目
- Leetcode 345. Reverse Vowels of a String (Easy) (cpp)
- C++ PP Chapter X 对象和类
- C++转换构造函数与类型转换构造函数
- 一种高效的 vector 四则运算处理方法
- 260. Single Number III
- c++高精度运算(加、乘)
- C++ 对象的内存布局(上)