年度归档: 2020 年

40 篇文章

thumbnail
STL 序列式容器
标准模版库 Standard Template Library(STL),是一种高效且功能强大的 C++ 程序库,被纳入 C++ 标准库中,是 ANSI/ISO C++ 规范中最新且具有创新性的一部分。它包含了计算机科学中常用的基本数据结构和算法,为 C++ 开发者提供了一个可扩展的框架,体现了软件复用性。 STL 采用了泛型编程模式,与面向对象编…
thumbnail
C++ 资源管理
RAII 技术 RAII(Resource Acquisition Is Initialization)是 C++ 中一种重要的资源管理技术,由 C++之父 Bjarne Stroustrup 提出。它利用对象的生命周期来管理资源,确保资源在对象生命周期结束时自动释放。RAII 通过构造函数获取资源,并在析构函数中释放资源,从而避免了资源泄漏。 R…
thumbnail
C++ 移动语义
移动语义(Move Semantics) 在 C++11 之前,当对象作为函数参数传递,或者从函数返回,或者作为复制构造函数的参数时,经常会造成不必要的性能开销,因为这些操作会进行对象的拷贝,包括其资源的拷贝(如动态分配的内存)。为了解决这个问题,C++11 引入了移动语义。 为什么要用移动语义? 移动语义 的核心思想是,当一个临时对象提供了右值引…
thumbnail
C++ 模版
C++ 作为一种静态类型、编译型语言,需要在编译时确定所有类型。为了在保持类型安全的同时提供灵活性,C++ 引入了模板机制,使得我们能够编写泛型代码。 模板是一种将数据类型作为参数传递给函数或类的通用机制。通过使用模板,我们可以编写与类型无关的代码,这些代码在编译时会针对特定的数据类型进行实例化。 为什么要定义模板 在静态类型语言中,变量的类型在编…
thumbnail
C++ 多态
多态 多态是面向对象编程的核心特征之一,它允许以统一的接口处理不同类型的对象。 什么是多态? 多态 允许不同的类的对象对同一消息做出不同的响应。简单来说,就是同一个函数或方法在不同的对象中可以有不同的实现。这样,当我们调用一个对象的方法时,无需知道对象的具体类型,就可以执行相应的行为。 为什么需要多态性? 多态性 带来以下好处: 代码复用:通过继承…
thumbnail
C++ 继承
继承 继承的基本概念 在 C++中,继承是一种重要的面向对象编程特性,它允许我们建立类之间的层次关系,实现代码的重用和扩展。 继承的概念: 基类(父类):被继承的类称为基类,它定义了可以被其他类继承的属性和方法。 派生类(子类):从基类继承而来的类称为派生类,它继承了基类的属性和方法,并可以添加自己的属性和方法。 在派生类的定义中,需要在类名前指定…
thumbnail
C++ 关联性容器
std::set std::set 的构造 std::set 是 C++ 标准库中的一个关联式容器,它根据元素值自动排序,并确保容器中每个元素的唯一性。 默认构造: 创建一个空的 std:: set。 std::set<Key, Compare, Allocator> set1; 复制构造: 使用另一个 std:: set 的内容、比较…
thumbnail
C++ 运算符重载
友元 在 C++ 中,类的私有成员(包括私有数据成员和私有成员函数)只能被该类自己的成员函数以及友元函数/类访问。友元关系是一种特殊的访问权限,允许非成员函数或类访问另一个类的私有成员。 友元关系通过在类内部使用 friend 关键字声明建立。可以声明友元函数或友元类: 友元函数:可以是 普通函数,也可以是 成员函数,它们可以访问声明它们为友元的类…
thumbnail
C++ 输入输出流
输入输出流 输入输出的含义 在计算机编程中,输入和输出(I/O)是程序与外部世界进行数据交换的基本方式。通常情况下,我们通过终端,也就是键盘和显示器,来进行数据的输入和输出。当我们从键盘键入数据或在屏幕上看到程序的运行结果时,这就是最直观的 I/O 操作。然而,从操作系统的角度来看,所有的输入输出设备,包括键盘、显示器、磁盘驱动器、甚至网络连接等,…
thumbnail
C++ 类和对象
面向对象思想 过程论(Procedural Programming) 核心观点: 程序由一系列步骤或过程组成,这些步骤按照一定的顺序执行。 数据和逻辑是分离的,数据是被处理的对象,而逻辑是处理数据的规则。 优点: 逻辑清晰:对于简单的、顺序的任务,过程论可以提供清晰的执行路径。 易于理解和控制:在小型或结构化程度高的应用中,过程论易于理解和控制。 …