
大话CPP语言
文章平均质量分 86
详细介绍嵌入式物联网基础课程之一的C++语言,作为一门常青树的编程语言,它依旧活跃在互联网与通信领域的各个行业。随着新能源等新兴行业的崛起,C++语言的重要性愈发凸显。因此,掌握C++语言成了必备的基础,跟着职创未来的脚本,我们一起迈向美好的明天!
职创未来官方
武汉职创未来科技有限公司简介:1、公司的愿景是成为服务最好的科技教育先驱者。 2、公司的使命是成为顾客心中的科技教育的先驱者与领导者。我们始终关注顾客的期望;通过科技创新,我们积极努力地推动科技在教育中应用落地,让科技教育更好地服务于广大青年群体! 3、公司的价值观是开放、包容、担当、创新
官方微信公众号:CreateManOnTheWay
展开
-
大话C++:第32篇 关联容器
set是一种关联容器,它存储了一组唯一的元素,并保证这些元素是按某种顺序排序的。set通常是基于平衡二叉搜索树(如红黑树)实现的,这使得它在添加、删除和查找元素时都能提供对数时间复杂度的性能。set容器主要特点:存储不重复的元素:这是set最基本的特点,它不允许存储重复的元素,所有元素都是唯一的。set中的元素会自动按照一定的顺序进行排序。默认情况下,元素是按照从小到大的顺序排序的,但也可以自定义排序规则。set。原创 2025-01-04 13:41:40 · 851 阅读 · 0 评论 -
大话C++:第30篇 破解shared_ptr引发的循环引用问题
正式介绍循环引用问题之前,我们必须先要掌握weak_ptr。原创 2024-11-30 10:32:30 · 562 阅读 · 0 评论 -
大话C++:第29篇 详解共享智能指针
是C++11引入的一种智能指针,它实现了共享所有权的方式来管理资源对象。也就是说,没有特定的shared_ptr拥有资源对象,相反,这些指向同一个资源对象的shared_ptr相互协作来确保该资源对象在不需要的时候被析构。原创 2024-11-16 10:13:23 · 910 阅读 · 0 评论 -
大话C++:第28篇 详解独占智能指针
C++中的智能指针是一种用于管理原生指针(raw pointer)生命周期的对象。智能指针的引入主要是为了帮助开发者避免原生指针在使用过程中可能产生的一些问题,如内存泄漏、野指针(dangling pointer)等。:这是一种独占所有权的智能指针,它负责对象的生命周期。当被销毁时,它所指向的对象也会被自动销毁。这种智能指针保证同一时间只能有一个指向同一个对象。它不能被复制到其他,但可以通过std::move来转移所有权。:这是一种共享所有权的智能指针。多个。原创 2024-11-16 09:53:02 · 425 阅读 · 0 评论 -
大话C++:第27篇 Lambda表达式
在C++中,lambda表达式(也称为闭包)是一种可以定义匿名函数对象的便捷方式。它们能够捕获所在作用域中的局部变量,并且可以在需要函数对象的地方使用。Lambda表达式为C++提供了更简洁、更灵活的函数式编程方式。其中,capture:捕获子句,用于指定lambda可以访问的外部变量的列表。捕获可以是按值()或按引用(),或者显式列出要捕获的变量。parameters:lambda函数的参数列表,与普通函数的参数列表类似。mutable可选的。如果指定了mutable。原创 2024-11-05 13:57:01 · 1037 阅读 · 0 评论 -
大话C++:第26篇 类模板
类模板是一个参数化类型,它使用一个或者多个参数来创建一系列类。类模板可以定义数据成员和函数成员,也可以使用访问标号控制对成员的访问,还可以定义构造函数和析构函数等。在类和类成员的定义中,可以使用模板形参作为类型或值的占位符,在使用类时再提供那些类型或值的具体信息。由于类模板包含类型参数,因此又称为参数化的类。利用类模板可以建立支持各种数据类型的类。类模板的语法格式template <typename 类型参数1, typename 类型参数2, ..., typename 类型参数N>class 类名。原创 2024-11-05 13:48:45 · 1047 阅读 · 0 评论 -
大话C++:第25篇 函数模板
函数模板定义在C++中创建了一个可以处理多种数据类型的通用函数框架。通过函数模板,可以编写一个函数,使其能够接受不同类型的参数,并根据这些参数的类型生成相应的函数实例。template关键字:它告诉编译器接下来的代码将定义一个模板。模板参数列表:用尖括号< >包围,里面包含一个或多个模板参数。这些参数是表示类型的占位符。函数返回类型:它可以是任何类型,包括模板参数类型。函数名:与普通函数一样,函数模板也需要一个名称。函数参数列表:它定义了函数接受的参数,这些参数的类型可以是模板参数类型或其他类型。原创 2024-10-30 19:46:34 · 723 阅读 · 0 评论 -
大话C++:第24篇 文件
文件是指一组相关数据的有序集合,这个数据集的名称叫做文件名。文件通常是驻留在外部介质(如磁盘等)上的,在使用时才调入内存中来,这就是为什么对文件操作时需要打开和关闭的原因。根据数据的存储方式,文件可以分为二进制文件和文本文件。二进制文件直接存储二进制数据,可以节省外存空间和转换时间,但一个字节并不对应一个字符,不能直接输出字符形式。文本文件是以二进制字符编码形式存储信息的文件,常用的字符编码如ASCII码、Unicode码等。文本文件便于对字符进行逐个处理,也便于输出字符。原创 2024-10-30 19:40:55 · 904 阅读 · 0 评论 -
大话C++:第23篇 输入输出
C++输入输出(I/O)是C++编程语言中非常重要的一部分,它涉及到从外部设备(如键盘、文件等)读取数据以及将数据写入到这些设备中。C++提供了一套丰富的I/O库,程序员可以使用这些库来执行各种输入输出操作。C++的I/O操作主要依赖于<iostream>头文件,它定义了用于输入输出的基本类型和函数。流(Streams):C++的I/O操作基于流的概念。流是一个字符序列,可以从中读取数据或向其中写入数据。原创 2024-10-24 14:26:33 · 844 阅读 · 0 评论 -
大话C++:第22篇 string高频操作
字符串比较是基于字符的Unicode值进行的,因此,对于非ASCII字符,比较的结果可能会与我们想象的不同,特别是当涉及到不同的字符编码或本地化设置时。在C++中,将数字转换为字符串通常使用标准库提供的函数,这些函数以简单直观的方式执行转换。如果找到,它返回子字符串或字符的起始位置的索引;,它返回字符串中字符的数量,不包括结尾的空字符(null character)。如果返回的值是0,那么字符串就是空的。函数,它接受一个数字作为参数,并返回一个表示该数字的字符串。类似,但是它从字符串的末尾开始向前查找。原创 2024-10-24 14:17:46 · 583 阅读 · 0 评论 -
大话C++:第21篇 string详解
C++ 的类是 C++ 标准库中的一个重要组件,用于表示和操作字符串。类提供了许多有用的成员函数,允许你执行各种字符串操作,如连接、比较、搜索、替换、插入和删除等。类是定义在<string>头文件中的。要使用类型及其相关的函数和操作符,我们需要在源代码文件中包含该头文件。原创 2024-10-19 14:36:11 · 800 阅读 · 0 评论 -
大话C++:第20篇 多继承与菱形继承问题
多继承是面向对象编程中的一个概念,指的是一个类可以继承自多个父类。通过多继承,子类可以获取多个父类的属性和方法,从而实现代码的重用和功能的扩展。多继承的其中,Derived类同时继承了Base1和Base2类的成员Derived类的对象可以访问Base1和Base2类中定义的所有公有(public)和受保护(protected)成员。然而,多继承也引入了一些复杂性和潜在的冲突。:当两个基类都从同一个类继承,并且一个类同时继承自这两个基类时,就可能出现菱形继承。原创 2024-10-19 14:29:06 · 590 阅读 · 0 评论 -
大话C++:第19篇 类继承下的若干关系
在继承中,同名函数指的是派生类中的函数与基类中的函数具有相同的名称,但它们可以是不同的函数签名(参数类型和数量不同)或甚至是相同的函数签名。如果基类没有默认构造函数(即没有不带参数的构造函数),而派生类的构造函数没有使用成员初始化列表来调用基类的某个构造函数,那么编译器将会报错,因为派生类的构造函数试图调用基类的一个不存在的默认构造函数。当派生类中的同名函数与基类中的函数具有相同的函数签名时,派生类中的函数会隐藏(或遮蔽)基类中的同名函数。,顺序非常重要:首先调用派生类的析构函数,然后是基类的析构函数。原创 2024-10-15 14:07:27 · 840 阅读 · 0 评论 -
大话C++:第18篇 类继承与派生
类继承(Class Inheritance)是面向对象编程(Object-Oriented Programming,OOP)中的一个核心概念。它允许我们创建一个新的类(子类或派生类),该类继承了另一个已存在的类(父类或基类)的属性和方法。这样,子类可以重用父类的代码,而无需重新编写。为什么会有类的继承呢?代码重用: 继承允许我们创建一个新的类,这个新类继承自一个已存在的类,从而重用那个类的代码。这意味着我们不需要从头开始编写所有代码,而是可以继承已有的代码,并在此基础上进行扩展或修改。原创 2024-10-15 13:58:51 · 996 阅读 · 0 评论 -
大话C++:第17篇 运算符重载
几乎 C++ 中所有的运算符都可以重载,但运算符重载的使用时相当受限制的。通过运算符重载,可以自定义运算符的行为,使其在作用于用户自定义的数据类型时具有特定的意义。运算符重载只是一种语法上的方便,它并不是创建新的运算符,而是对已有的运算符进行重新定义。重载运算符的目的是为了增强代码的可读性和表达能力,而不是为了创建新的运算符。关键字,后跟要重载的运算符符号。重载的运算符函数可以作为类的成员函数或非成员函数进行定义。被重载了以模拟函数调用的外观,但它仍然是一个类的成员函数,并且遵循成员函数的调用规则。原创 2024-10-12 14:10:38 · 1071 阅读 · 0 评论 -
大话C++:第16篇 赋值运算符
在C++中,赋值运算符(assignment operator)是一个特殊的成员函数,用于将一个对象的内容赋值给另一个对象。默认情况下,编译器会为类生成一个赋值运算符。自定义赋值运算符的类成员函数语法格式其中,ClassName是你的类名rhs是“right-hand side”的缩写,代表赋值运算符右边的对象。函数返回一个引用到调用对象(即左侧的对象)public:// 默认构造函数Person()// 构造函数// 赋值运算符的重载// 防止自赋值// 复制其他对象的成员值。原创 2024-10-12 14:01:45 · 1264 阅读 · 0 评论 -
大话C++:第15篇 友元
友元(Friend)是C++中的一个特殊概念,它允许一个类或函数访问另一个类的私有和保护成员。友元可以是一个函数,也可以是一个类。原创 2024-10-09 10:07:13 · 1017 阅读 · 0 评论 -
大话C++:第14篇 静态类成员
在C++中,静态成员(包括静态成员变量和静态成员函数)是类的一部分,但它们的行为与普通的非静态成员不同。静态成员是与类本身相关联的,而不是与类的任何特定对象实例相关联的。这意味着无论创建多少个类的对象,都只有一个静态成员的副本。原创 2024-10-09 10:01:39 · 1247 阅读 · 0 评论 -
大话C++:第13篇 this指针
this指针是C++中的一个特殊指针,它隐含在每一个非静态成员函数中,指向调用该函数的对象。这个指针提供了对调用对象自身的访问,使得在成员函数中能够访问对象的成员变量和其他成员函数。this指针的语法格式// this指针本身this// this指针的成员。原创 2024-09-24 11:58:56 · 224 阅读 · 0 评论 -
大话C++:第12篇 构造函数与析构函数
C++构造函数是一种特殊的成员函数,用于初始化类的对象。当创建对象时,构造函数会自动执行,且只执行一次。它主要用于设置对象的初始状态或执行一些必要的初始化操作。原创 2024-09-24 11:47:28 · 1434 阅读 · 0 评论 -
大话C++:第11篇 类的定义与封装
在C++中,类的定义通常使用class关键字开始,后面紧跟类的名称。类可以包含数据成员(变量)和成员函数(方法)。在C++中,类可以更加详细地展开,包括数据成员(变量)的声明、成员函数的声明与定义、构造函数、析构函数、内联成员函数、静态成员、友元函数等。类定义的其中,构造函数和析构函数用于对象的初始化和清理。成员函数可以是公共的、受保护的或私有的。静态成员(函数和变量)属于类本身,而不是类的任何特定对象。友元函数和友元类可以访问类的私有和保护成员。原创 2024-09-20 11:54:22 · 949 阅读 · 0 评论 -
大话C++:第10篇 类与对象
面向过程编程(Procedural Programming)是一种编程范式,它侧重于通过过程(函数或子程序)来解决问题。在面向过程编程中,程序被分解为一系列的过程,每个过程执行一个具体的任务,并通过调用这些过程来实现程序的整体功能。面向过程编程的特点:模块化:程序被划分为一系列独立的函数或过程,每个函数或过程负责执行特定的任务。顺序执行:程序按照预定的顺序执行函数或过程。数据传递:函数或过程之间通过参数传递数据。原创 2024-09-20 11:50:51 · 1392 阅读 · 0 评论 -
大话C++:第9篇 引用
C++中新增了一种复合类型,引用变量。引用是已定义的变量的别名。通过这个别名和原来的名字都能够找到同一份数据。引用在定义时必须被初始化,并且一旦初始化后,就不能再指向其他变量。引用的声明语法格式其中,type是变量的类型ref是引用的名称var是已经存在的变量在这个声明中,ref就是var的一个引用,或者说别名,对ref的任何操作都会反映到var上。引用类似于Windows中的快捷方式,一个可执行程序可以有多个快捷方式,通过这些快捷方式和可执行程序本身都能够运行程序。原创 2024-09-18 11:14:00 · 938 阅读 · 0 评论 -
大话C++:第8篇 函数重载
函数重载(Function Overloading)是C++中的一个重要概念,它允许在同一作用域内声明多个同名函数,但这些函数的参数列表(即参数的个数、类型或顺序)必须不同。例如,如果一个函数有两个参数,其中第二个参数有默认值,那么它实际上可以被视为一个接受一个或两个参数的函数,这可能会与另一个只接受一个参数的函数产生冲突。函数模板是在编译时根据实参类型生成具体的函数版本,而函数重载则是通过不同的函数名(实际上是修饰后的函数名)来区分不同的函数版本。如果两个函数的参数列表完全相同,它们就不能构成重载。原创 2024-09-18 11:06:57 · 650 阅读 · 0 评论 -
大话C++:第7篇 函数参数默认值
函数参数默认值的基本用法是在调用函数时,如果没有提供某个参数的值,则使用该参数的默认值。函数参数的默认值是指在函数定义时,为参数指定一个默认值。当调用该函数时,如果没有给参数传递值,则会使用该参数的默认值。默认值的生效条件:只有当函数调用时没有提供该参数的值时,才会使用默认值。如果提供了该参数的值,则使用提供的值。设置默认值的小技巧:在设置默认值时,应该考虑参数的常见值和合理范围,以及程序的健壮性和可维护性。函数的默认参数从左向右,如果一个参数设置了默认参数,那么这个参数之后的参数都必须设置默认参数。原创 2024-09-06 15:29:01 · 386 阅读 · 0 评论 -
大话C++:第6篇 命名空间namespace作用域
在C++中,命名空间(namespace)是一个封装了一组名称的容器,这些名称可以是变量、函数、类、类型别名、枚举、模板等。命名空间提供了一种避免名称冲突的方法,允许开发者将相关的代码组织在一起,并在必要时将它们与其他代码隔离开来。命名空间的定义使用namespace关键字后跟一个标识符(即命名空间的名称)。命名空间可以包含其他命名空间,从而形成命名空间的嵌套结构。Project/其中,namespace_a.h (头文件)原创 2024-09-06 15:25:15 · 1189 阅读 · 0 评论 -
大话C++:第5篇 再识作用域
C++中的作用域(Scope)指的是变量、函数或其他标识符的可见和可访问的范围。C++中有多种作用域,包括:全局作用域(Global Scope):在全局作用域中声明的变量和函数在整个程序中都是可见的。它们可以在程序的任何位置被访问,除非它们在其他的局部作用域中被重新定义。局部作用域(Local Scope):在函数或代码块内部声明的变量和函数具有局部作用域。它们只能在声明它们的函数或代码块内部被访问。当函数或代码块执行完毕后,这些变量和函数将不再存在。原创 2024-08-31 14:03:18 · 775 阅读 · 0 评论 -
大话C++:第4篇 C++增强型struct
上述代码中,student结构体成员变量无法赋值默认值,除非,定义具体结构体变量时,直接对该变量初始化。除了用于封装多个不同类型的数据成员,还可以包含成员函数,这些函数可以操作结构体的成员变量。只能定义成员变量,不能定义成员函数。例如,定义学生结构体。在语法上是相似的,只是默认的访问权限不同。内部显式地指定成员的访问权限。原创 2024-08-30 11:05:25 · 365 阅读 · 0 评论 -
大话C++:第3篇 C++数据类型
C++中的宽字符变量的定义使用wchar_t数据类型表示,语法格式wchar_t 变量名 = 宽字符字面量;其中,宽字符字面量是以L或l(通常是大写)开头的字符。int main()// 定义一个宽字符变量,并用宽字符字面量初始化wchar_t wideVar = L'你';// 使用 wcout 输出宽字符std::wcout原创 2024-08-30 11:02:47 · 905 阅读 · 0 评论 -
大话C++:第2篇 C++编译器
C++语言的编译器是将C++源代码转换为机器可执行代码的工具。以下是一些广泛使用的C++编译器:GNU Compiler Collection (GCC):GCC是一个自由软件编译器集合,支持C、C++、Objective-C、Fortran、Ada和Go等多种编程语言。它是最流行的开源C++编译器之一,广泛用于各种操作系统和平台上。Clang:Clang是基于LLVM的C、C++、Objective-C和Objective-C++编译器前端。原创 2024-08-28 11:08:12 · 1265 阅读 · 0 评论 -
大话C++:第1篇 C++语言概述
C++是由C语言扩展升级而来,最早于1979年由本贾尼·斯特劳斯特卢普在AT&T贝尔工作室研发。C++在继承了C语言过程化程序设计特性的基础上,进一步扩充和完善了C语言,引入了面向对象的程序设计概念,如抽象数据类型、继承和多态等。这使得C++在面向对象程序设计方面具有强大的能力,同时它也可以进行基于过程的程序设计。原创 2024-08-28 11:00:59 · 1240 阅读 · 0 评论