仅目录,微专业 侯捷c++系统工程师
文章目录
- C++
- 面向对象高级开发 上
- 面向对象高级开发 下
- 1 导读
- 2 conversion-function
- 4 pointer_like_classes
- 5 function_like_classes
- 6 namespace 经验之谈
- 7 class-template
- 8 function_Templete
- 9 member_templete
- 10 specialization
- 11 模板偏特化
- 12 模板参数
- 13 关于C++标准库
- 14 三个主题
- 15 reference
- 16 复合&继承关系下的构造和析构
- 17_2 关于vptr和vbtl
- 18 关于this
- 19 关于dynamic_binding
- 20 关于new,delete
- 21
- 22 示例
- 23 重载new(),delete()示例
- 24 basic_string使用new(extra)扩展申请量
- STL与泛型编程
- C++设计模式
- 算法原理与实践
- 系统设计与实践
- 辅导课
- 系统设计与实践
- 辅导课
C++
操作符重载与临时对象
1. 【头文件,防卫式声明】
2. C++中::的用法
3. header(头文件)的布局
0 为前置声明
1 为class的本体
2 为class本体以外的一段【为函数部分】:
global函数【全域函数】:
成员函数【带上class名的,此处为complex】:
4. 成员函数,全局函数,友元函数的区别:
5. 照片路径 C: \AppData\Roaming\Typora\typora-user-images\
问
- complex* ths 是?
- ths->re 是?
- inline ? 内联函数
文
操作符重载之一,成员函数 this
注释
- 成员函数:类体内进行声明,体内或体外进行定义/实现;【定义,创建了对象并分配内存空间。声明,没有分配空间】【所有的成员函数都带有隐藏参数 this ?? ——没写,但是他在,this函数】
- (this,const complex& r)中的this 实际在定义时,并不写出,只在调用的时候 作为参数调用,即: return __doaple(this,r); this 实际是指向C2的指针【即 传入this的是C2的地址】【此处是因为编译器将 += 符号作用在左边,即C2调用此函数,即this指向调用者】
- __doapl(conplex* ths,const complex& r)是重载,其函数体内是具体的操作方法。拿出来单独写,是作为重用模块考虑。
- 在C内,你要对某个对象做操作,就是要写个函数,而在C++里面,操作符就是一个函数,是可以重新定义的。
- 编译器如何看待操作符:遇见,找对象,对象有对此符号做定义——找到,调用。
reference
用法:传递参数;返回值方式
【此问题,针对于操作符重载的连续使用的思考】
1和3 是返回值类型,使用reference方式[使用&传值]_好处之一:使用者无需知道接收者是以何种接收方式。1是引用,即,其形式是按照引用对象的类型而定。2是value【指针解*,即value】,在4,进行到C2时,由于还会进行C3,得明确此时的类型,此时就体现了reference的优势。
【Eg】
操作符重载之二,非成员函数 【无this】
操作符“+”的三种可能使用情况:
注意:
上述函数的返回值均只能by value;而不能是by referencen 。因为他们返回的必定是个 local abject。
构造函数若无参数时,则启用默认值
临时对象temp object: 类名(参数)
无命名(如 c1 ,c2等),生命周期——进行到下一行则结束。如下面函数或 黄色部分:一种特殊语法,一般人很少用,但是,标准库用得多…
小结:
return by value: inline complex
return by reference: intline complex &
操作符重载之 正负号
注:
1 第二个框框内的是 使用方法
编译器如何判别是加减还是正负呢:
答:靠参数个数来区别。+c1: 一个参数,则为+
2 第一个正号的函数和第二个 为负号的函数 区别:
第一个可以 by reference
第二个不可以,第二个做返回的时候,有新空间的开辟——放置新产生的数据对象。实际使用了一个临时对象,函数结束则销毁了,故 只能使用by value
复数的比较
【思考传递(传参数或者返回值)的速度问题:by reference 与 by value】
相等
不等
任何一个操作,你都有两种想法,写成:成员函数或者全域函数噗【但是 对于 特殊的操作符 你只能选择一种:全域函数,如,<<】
<<符号重载
在C++中,<< 在编译器和 语法中,作用在左边的成员 (如 cout << c1,则作用在cout上,将cout当做 “屏幕”理解)
操作符有两种写法,成员函数,非成员函数:
<< 只有全局函数的写法
上图的解释:
(ostream & os,const complex & x):
这个参数列,分别是传入的第一参数和第二参数:cout 和<<右半边的参数
os的类型 是ostream,亦即cout的类型,为什么——标准库是这么定下的。传的引用,未用const,因为会做修改,因输出不同的时候。
x的类型是complex,传引用,const——不让做修改
return os 后面就是你的复数输出格式
ostream & operator 前面的ostream是返回值类型:既然是输出到屏幕,则不会在意除数类型,所以可以用传值形式。然而,由于 可能存在 连续输出(cout<<c1<<conj(c1)),所以 还是用ostream比较好,而不是使用void。至于 & 则,由于 return的不是local啥的,所以可以使用 传引用方式
cout<<c1<<conj(c1),是将c1传给cout后,再将conj(c1)传给上述的
上述修改:则不需要return,以及不适用于 cout<<c1<<conj(c1),解释见上
小结 :关于复数这个类的注意点
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gPQEtNNn-1631363021876)(C:\Users\小贰\AppData\Roaming\Typora\typora-user-images\image-20210810095712464.png)]
1 构造函数的: re®,im(i) 的使用【见图】
2 函数该不该加const 【real () const {return re;}】
3 参数的传递尽量考虑pass by reference 以及加不加const 【double i=0 / const complex &】
4 return的时候 :double 还是类名 【double /complex &】
5 数据 尽可能放在private内;函数则是绝大部分在public内
面向对象高级开发 上
1c++编程简介
2头文件与类的声明
3构造函数
4参数传递与返回值类型
5操作符重载与临时对象
6复习complex类的实现过程
7三大函数:拷贝构造,拷贝复制,析构
8堆,栈与内存管理
9复习string类的实现过程
10拓展补充:类模板,函数模板,及其他
11组合与继承
12虚函数与多态
13委托相关设计
面向对象高级开发 下
1 导读
2 conversion-function
4 pointer_like_classes
5 function_like_classes
6 namespace 经验之谈
7 class-template
8 function_Templete
9 member_templete
10 specialization
11 模板偏特化
12 模板参数
13 关于C++标准库
14 三个主题
15 reference
16 复合&继承关系下的构造和析构
17_2 关于vptr和vbtl
18 关于this
19 关于dynamic_binding
20 关于new,delete
21
22 示例
23 重载new(),delete()示例
24 basic_string使用new(extra)扩展申请量
STL与泛型编程
模板观念与函数模板
类模板与操作符重载
泛型编程
容器
STL整体结构,仿函数,仿函数适配器,binder1st
binder2ed,mem_fun,mem_fun_ref
容器扩展内容
泛型算法_非变易算法
泛型算法_排序
泛型算法_数值算法
内存分配器
C++设计模式
设计模式简介
面向对象设计原则
模板方法
策略模式
观察者模式
装饰模式
桥模式
工厂方法
抽象工厂
原型模式
构建器
单件模式
享元模式
门面模式
代理模式
适配器
中介者模式
状态模式
备忘录
组合模式
迭代器
职责链
命令模式
访问器
解析器
设计模式总结
算法原理与实践
面试中的算法和准备过程
数组和字符串
数组和字符串
链表_上
链表_中
链表_下
栈与队列
二叉树_上
二叉树_下
排序_上
排序_下
动态规划_上
动态规划_中
动态规划_下
图_上
图_中
图_下
高频算法_上
高频算法_中
高频算法_下
系统设计与实践
系统设计介绍
实战演练(短URL设计)
系统设计七剑客_上
系统设计七剑客_下
案例分析
搭建大规模可拓展系统(2)
搭建大规模可拓展系统(3)
搭建大规模可拓展系统(4)
大数据系统
海量数据处理方法
海量数据处理案例1
海量数据处理案例2
资料推荐与案例分析
辅导课
调试专题辅导
上