C++笔记:某培训课程与21天学通C++

写在开头的话

有人讲解,学习效率还是会高一些的吧。

愿我能坚持。更愿我能在写完这个笔记后,继续写学习笔记之二。毕竟,培训班的课程只能算一个开始。

后来在忙其他事情的时候,学到了更多的东西,于是把21天学通C++及网络上资料(主要是菜鸟教程)的学习笔记也记到这上面来。虽然和周记系列有点冲突,但同时进行吧,做下去就能变得清晰。

Day1

先说一下直观地感受,比起自学,视频更让我有了系统学习、或者说科班的感受。毕竟我自己是遇到什么问题才去学相应的内容。不过我之前的基础或者说经历,还是有些用的。老师讲到一些地方,我能和我之前的经验联系起来。

原来C++ primer plus比C++ primer更基础

C++的特点

说到内存分配,前几天修改Jinc放大算法时还遇到过(给Data分配内存,C++中更推荐用new代替C的malloc()),联系之前用Python写作业的经历。确实是,定义一个变量,C++需要考虑内存分配和释放的问题,而Python完全不用管。所以这也是C++更高效的原因,开发者可以控制、优化内存的使用。

命名空间(namespace)相关

std标准命名空间,来自<iostream>,自定义命名空间则通过以下方式实现。

1
namespace space { ... } // 注意没有分号

struct类型

struct类型是我自己接触较多的,但可能是视频里讲得不多,还是没听太明白。视频给我的感受,和定义了一个类差不都,但平时的经历让我觉得这只是给变量起了个新名字。

Other

其余就是比较基础的东西了,命名空间的调用、变量的定义、bool类型,以及在这些过程中学到的基础的代码和VS使用。

Day 2

运行了一下基本的类的代码。

Day 3

学习了多态、虚函数,从书中看了纯虚函数的概念。

但回到avs版的JincResize脚本,也只是用纯虚函数把函数封装得更“严实”,我还无法理解这样做的意义。而且看上去也无关速度。(那我的dll为什么那么慢…我要掀桌子了orz…(后来发现是msvc编译器的问题,换成gcc编译器就快了…)

Day n

构造函数

所谓构造函数,可以理解为构建一个属于类的对象。

  • 构造函数与类同名
  • 构造函数可以重载
  • 构造函数没有返回值
  • (原始的)构造函数没有参数,但重载也可以有参数
  • 可以在类外定义构造函数,需要className::className()这样写