C++温故笔记(一)

简介: 从学C++到现在也有十个年头了,一直在用,也一直在不断的研究和学习。最近时间比较宽松,就把之前的一些书籍翻了出来,把基础的东西都又略读了一遍,有了不少的收获。这可能就是所谓的理论和实践的不断循环吧。

从学C++到现在也有十个年头了,一直在用,也一直在不断的研究和学习。最近时间比较宽松,就把之前的一些书籍翻了出来,把基础的东西都又略读了一遍,有了不少的收获。这可能就是所谓的理论和实践的不断循环吧。将略读过程中所做的笔记整理出来,主要是总结和备忘,如果能对他人有所帮助,那就善莫大焉了。注:都是一些基础的东西,没有什么高深的,大牛可以跳过。

一、模板和泛型

1、模板是C++语言与众不同的特性,是标准库的基础。

2、函数模板是建立算法库的基础,类模板是建立标准库容器和迭代器类型的基础。

3、模板是泛型编程的基础。


二、异常处理

1、C++的异常处理中,需要由问题检测部分抛出一个对象给处理代码,通过这个对象的类型和内容,两个部分能够就出现了什么错误进行通信。

2、异常对象由编译器管理,而且保证驻留在可能被激活的任意catch都可以访问的空间。

3、当抛出一个表达式的时候,被抛出对象的静态编译时类型将决定异常对象的类型。

4、栈展开(stack unwinding),沿嵌套函数调用链继续向上,直至为异常找到一个catch子句,就进入该catch子句,并在该处理代码中继续执行。当catch结束的时候,在紧接与该try块相关的最后一个catch子句之后的点继续执行。

5、析构函数应该从不抛出异常。


三、RAZZ

1、通过定义一个类来封装资源的分配和释放,可以保证正确释放资源。这一技术通常称为“资源分配即初始化”,简称RAII。

2、autoptr类是RAII的实例。


四、析构函数

1、合成析构函数按对象创建时的逆序撤销每个非static成员,因此,它按成员在类中声明次序的逆序撤销成员。

2、析构函数与复制构造函数或者赋值操作符之间的一个重要区别是,即使我们编写了自己的析构函数,合成析构函数仍然运行。

目录
相关文章
|
5月前
|
算法 C++
算法笔记:递归(c++实现)
算法笔记:递归(c++实现)
|
5月前
|
编译器 C++
《Effective C++ 改善程序与设计的55个具体做法》 第一章 笔记
《Effective C++ 改善程序与设计的55个具体做法》 第一章 笔记
|
3月前
|
C++ 容器
【C/C++笔记】迭代器
【C/C++笔记】迭代器
25 1
|
3月前
|
存储 安全 程序员
【C/C++笔记】迭代器范围
【C/C++笔记】迭代器范围
66 0
|
4月前
|
C++ Windows
FFmpeg开发笔记(三十九)给Visual Studio的C++工程集成FFmpeg
在Windows上使用Visual Studio 2022进行FFmpeg和SDL2集成开发,首先安装FFmpeg至E:\msys64\usr\local\ffmpeg,然后新建C++控制台项目。在项目属性中,添加FFmpeg和SDL2的头文件及库文件目录。接着配置链接器的附加依赖项,包括多个FFmpeg及SDL2的lib文件。在代码中引入FFmpeg的`av_log`函数输出"Hello World",编译并运行,若看到"Hello World",即表示集成成功。详细步骤可参考《FFmpeg开发实战:从零基础到短视频上线》。
157 0
FFmpeg开发笔记(三十九)给Visual Studio的C++工程集成FFmpeg
|
6月前
|
算法 C++ 容器
黑马c++ STL常用算法 笔记(5) 常用算术生成算法
黑马c++ STL常用算法 笔记(5) 常用算术生成算法
|
5月前
|
编译器 C++
《Effective C++ 改善程序与设计的55个具体做法》 第二章 构造/析构/赋值运算 笔记
《Effective C++ 改善程序与设计的55个具体做法》 第二章 构造/析构/赋值运算 笔记
|
5月前
|
存储 小程序 程序员
Essential C++ 第1章 C++编程基础 (笔记)
Essential C++ 第1章 C++编程基础 (笔记)
|
5月前
|
算法 C语言 C++
面向考试编程C++笔记
面向考试编程C++笔记
|
6月前
|
算法 C++ 容器
黑马c++ STL常用算法 笔记(6) 常用集合算法
黑马c++ STL常用算法 笔记(6) 常用集合算法