【动态调整】近期学习计划和完成情况

简单列一下最近的学习计划

算法:

完成代码随想录一刷


C++:

过一遍《C++ Primer》
看《Effective C++》、《Effective STL》
候捷老师的视频:《C++面向对象高级开发》


计算机基础:

1、计算机网络:

b站的计算机网络微课堂
视频时长:15小时46分(p73)

2、操作系统:

王道的操作系统视频
视频时长:24小时20分(p84)

3、MySQL:

4:Redis:


项目:
分布式Linux性能监控


下面是每日完成的情况:

7.13:
leetcode 738、968
计算机网络 第一章:概述(p1-p11)
操作系统 第一章:操作系统概念(p1-p8)

7.14:
leetcode 509、70、746
操作系统 第一章:操作系统概念(p9-p10)

7.15:
leetcode 62、63
计算机网络 第二章:物理层(p14-p19)

7.16:
休息,看《碟中谍7》

7.17:
算法:
leetcode 343、96
01背包二维dp数组、01背包一维dp数组

C++ :
面向对象高级开发视频
1.C++编程简介
2.头文件与类的声明
3.构造函数
4.参数传递与返回值

计算机网络 第三章 数据链路层(p22-p23)

7.18:
算法:
leetcode416、1049
整理01背包的各种问题

C++:
面向对象高级开发视频
5.操作符重载与临时对象

7.19:
去医院

7.20:
算法:
代码随想录day44

7.21:
算法:
代码随想录day45
C++:
面向对象高级开发视频
6.复习Complex类的实现过程(好视频)

7.22:
C++:
面向对象高级开发视频
7.三大函数:拷贝构造、拷贝复制、析构

7.23:
休息

7.24:
算法:
代码随想录day46(看一下背包问题总结篇
代码随想录day48
C++:
8.堆、栈与内存管理
项目:
配置虚拟机ubuntu环境

7.25:
算法:
代码随想录day49
代码随想录day50
C++:
9.复习String类的实现过程

7.26:
算法:
代码随想录day51

7.27:
休息

7.28:
算法:
代码随想录day52

8.2:
算法:
代码随想录day53

8.4:
算法:
代码随想录day54

8.8:
算法:
代码随想录day55、day56


笔记:
1、为什么类中数据尽量是private(不给外界看到),函数是public?
在这里插入图片描述
创建一个复数对象c1,想要读取它的实部和虚部。正确的做法是,调用public中的函数c1.real()和c2.imag(),如右图所示;错误的做法是,直接拿对象c1的data(private中的re和im),这是不允许的。

数据一定要通过他们的“自己人”(函数)来传递出去,或被设定(读或写)。不可以直接从外部拿,除非这些数据是public。

因此,所有的数据尽量放在private;如果是要被外界调用的函数,放在public。

2、写构造函数时,尽量使用它的初始列(初始化阶段),而不是{ }中进行赋值。虽然两者结果相同,但前者较为大气,性能也更好。
在这里插入图片描述
3、const
类中需要不变的地方一定要加上const。
如果类中没有加const,但是在调用的时候写了const(如右图),则编译器会报错,因为调用的时候需要变量不变,但是在函数中又告诉编译器是可以变的(const),产生矛盾。
在这里插入图片描述
const可以用来修饰函数,写在函数名称与{ }之间;
也可以用来修饰变量,写在变量名前。

4、变量尽量传引用。
在这里插入图片描述
通过值传递时,也许是4个字节,也许是100个字节,速度会很慢;
但是通过引用传递,实际上传递了一个指针(把地址传递过去),只有4个字节,速度更快。

如果不希望传递的东西被更改(因为对方一改,也会影响到我),就在前面加上const。表示,这个东西我传给你,但是你不能改。如果在传给你后,你作了更改,那么编译器会报错。

5、可以的情况下,返回也尽量用引用。(后续会详细展开)
在这里插入图片描述
6、友元friend,表示这个函数可以自由取得frined的private成员,不需要通过函数调用。
在这里插入图片描述
友元不宜过多,因为它打破了private的封装性。

相同class的各个object互为友元,可以直接调用数据。
在这里插入图片描述
6、inline(内联)函数
在类中直接定义函数当然是最快的,所有函数都是inline固然是最好。但是有些函数过于复杂时,编译器会自行判断是否inline(即使函数是写在类内部的)。
在类中声明,在外部定义时,可以在外部定义前加上inline,告诉编译器,如果可以的话,也把这个函数当成inline。
在这里插入图片描述
7.关于对象object:
1)不加static的对象为local object(是储存在栈stack中的),在离开函数的作用域(大括号{})后会被自动清理,也叫auto object;
2)使用new动态分配分配内存的对象(是储存在堆heap中的),在离开函数的作用域前需要手动清理内存(delete),否则会造成内存泄露;
3)加static的对象为静态对象static object,其生命在离开函数作用之后仍然存在,直到整个程序结束才会调用其析构函数(生命才终止);
4)global object全局对象,它的生命在main函数之前已经存在,在main函数结束后才结束,可以视为一种static object,但作用域是整个程序。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
需要删除的是指针p,delete会调用Comlex的析构函数。如果没有delete,会出现内存泄露。(在离开作用域之后,指针本身死亡了,但是指针所指的空间还在)
在这里插入图片描述
8.判断函数返回值能否return by reference(&):
看这个函数执行的结果放到什么地方去——只要放的地方不是local object,就可以用引用返回。
在这里插入图片描述
在这个“string& operator= …"例子中从来源端赋值到目的端,目的端本来就存在,并不需要在这个函数中去创建,所有可以return by reference

9.&放在类名称后面,是引用:const String& str
&放在对象前面,是取该对象的地址,得到的是一个指针:this == &str
在这里插入图片描述
return *this;是取址,deference,表示取this这个指针所指向地址的内容。
(this是一根指针,*this是它指的东西)

不管在接收端是以值还是引用接收,return传出去的就是一个“东西”;
至于返回端return传出去是引用还是值就看接收端String&以何种方式接收引用/值)。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值