07. 指针、数组与引用
指针 ​void*​ 不允许加减,因为不知道指向对象的大小。 指针的数值运算(+​、-​、++​、--​),依赖于所指定的对象。 指针之间的减法只有指向同一数组的元素才有效,当计算两个指针 p​ 和 q​ 的差值(q - p​)时,所得结果是序列 [p:q)​ 中的元素数量(一个整数): #include <iostream> #inc…
06. 类型与声明
C++ 标准 依赖于实现的行为: 很多功能依赖于实现,即每个实现版本都必须定义语法行为并记录行为规范。 例如,char ​类型的位数可能因实现而异,导致某些操作依赖于实现。 依赖于实现的功能与硬件系统密切相关。 不确定行为和未定义行为: 不确定行为意味着几种行为都有可能发生,但实现者没有指定具体是哪一种。 未定义行为是指具体实现无法为某一概念指定明…
05. C++概览:并发与实用功能
资源管理 RAII(Resource Acquisition Is Initialization,资源获取即初始化)的核心思想是将资源的生命周期与栈对象的生命周期绑定在一起,通过对象的构造函数来获取资源,在析构函数中释放资源。这样可以确保即使在发生异常的情况下,资源也能被正确地释放,避免资源泄露。 void f(int i, int j) { X*…
04. C++概览:容器与算法
标准库 标准库提供的设施可以分为以下几类: 运行时语言支持(例如,对资源分配和运行时类型信息的支持) C 标准库(进行了微小的修改,以便尽量减少与类型系统的冲突) 字符串和 I/O 流(包括对国际字符集和本地化的支持) I/O 流是一个可扩展的输入输出框架,用户可向其中添加自己的流、缓冲策略和字符集。 一个包含容器(如 vector​ 和 map​…
03. C++概览:抽象机制
类 具体类 允许 把具体类型的对象置于栈、静态分配的内存或者其他对象 直接引用对象(而非仅仅通过指针或引用) 创建对象后立即进行完整的初始化(比如使用构造函数) 拷贝对象 抽象类 含有纯虚函数的类,称为抽象类 将使用者与类的实现细节完全隔离开 因为我们对抽象类型的表现形式一无所知(甚至对它的大小也不了解),所以必须从自由存储为对象分配空间,然后通过…
02. C++概览:基础知识
初始化器列表(通用) 确保不会发生导致信息丢失的转换(窄化类型转换) int i1 = 7.2 // 变成7,信息丢失,意料之外? int i2 {7.2} // 报错,conversion from 'double' to 'int', possible loss of data int i2 = {7.2} // 报错,并且 = 多余 引入新名…
GNS3 安装
下载 官网:https://www.gns3.com/software/download 官网下载很费劲,不如直接去 GitHub 文件清单 GNS3.VM.VMware.Workstation.2.2.49.zip GNS3-2.2.49-all-in-one.exe 安装 VMWare Workstation 安装 解压后,双击以VMware …
24.过滤器模式
定义 过滤器模式就是根据某种规则,从一组对象中,过滤掉一些不符合要求的对象的过程。 过滤器模式的模型抽象 代码框架
23.解释模式
定义 定义一个语言,定义它的文法的一种表示;并定义一个解释器,该解释器使用该文法来解释语言中的句子。 类图 应用案例 from abc import ABCMeta, abstractmethod # 引入ABCMeta和abstractmethod来定义抽象类和抽象方法 class Expression(metaclass=ABCMeta): &…