目录_网易微专业C++系统工程师

仅目录,微专业 侯捷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

资料推荐与案例分析

辅导课

调试专题辅导

高频算法_中

高频算法_下

系统设计与实践

系统设计介绍

实战演练(短URL设计)

系统设计七剑客_上

系统设计七剑客_下

案例分析

搭建大规模可拓展系统(2)

搭建大规模可拓展系统(3)

搭建大规模可拓展系统(4)

大数据系统

海量数据处理方法

海量数据处理案例1

海量数据处理案例2

资料推荐与案例分析

辅导课

调试专题辅导

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值