![](https://img-blog.csdnimg.cn/direct/397c89090db548a5a2b23c0ae5b91335.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++基础与深度解析
文章平均质量分 97
不积跬步无以至千里
嵌入式_晚风
道阻且长,行则将至。行而不辍,未来可期。
展开
-
C++基础与深度解析 | 异常处理 | 枚举与联合 | 嵌套类与局部类 | 嵌套名字空间与匿名名字空间 | 位域与volatile关键字
如果异常是在对象的构造过程中抛出的,并且没有被捕获,那么类的析构函数不会被调用。引入了结构化的错误处理机制,使得错误处理逻辑与正常逻辑分离,提高了代码的可读性和可维护性。关键字用于抛出一个异常。),在构造函数中抛出异常且未被捕获时,需要手动释放分配的内存,因为析构函数不会被调用。如果对象是局部的(即在栈上),异常抛出时,局部对象会自动销毁,但不会调用其析构函数。如果在构造函数中抛出异常,已经构造的成员对象将按照它们构造的相反顺序自动销毁。是一个通用的异常捕获器,它可以捕获任何类型的异常,包括未被前面的。原创 2024-06-08 23:02:00 · 1104 阅读 · 0 评论 -
C++基础与深度解析 | 元编程 | 元编程的编写方式 | 减少实例化技巧
这一章写的既浅又乱,为了知识的完整性先传上来,之后会重构。原创 2024-06-08 17:34:55 · 908 阅读 · 0 评论 -
C++基础与深度解析 | 模板 | 函数模板 | 类模板与成员函数模板 | concepts | 完美转发 | 模板的其他内容
C++模板是C++语言中一种强大的泛型编程工具,它允许开发者编写可以在编译时接受任意类型的代码。模板可以用于函数、类、类模板特化等。原创 2024-06-07 22:19:58 · 1321 阅读 · 0 评论 -
C++基础与深度解析 | 类进阶 | 运算符重载 | 类的继承 | 虚函数
运算符重载允许程序员定义或修改已有运算符对用户定义类型(如类)的操作。例如,可以为自定义的类重载+运算符,以实现两个对象的加法操作。继承是面向对象编程的一个核心概念,它允许一个类(称为子类或派生类)继承另一个类(称为基类或父类)的属性和方法。虚函数是可以在派生类中被重写的函数,它们是实现多态的关键。原创 2024-06-04 22:55:58 · 797 阅读 · 0 评论 -
C++基础与深度解析 | 类与面向对象编程 | 数据成员 | 成员函数 | 访问限定符与友元 | 构造、析构成员函数 | 字面值类、成员指针与bind交互
C++是一门支持面向对象编程的编程语言,类是面向对象编程的基本概念之一。类是一个用户自定义的数据类型,它可以包含数据成员、函数成员、构造函数和析构函数等。在面向对象编程中,类是一个抽象的概念,它定义了一类对象的共同特征和行为。通过类可以创建对象,对象是类的实例化。C++中的面向对象编程还包括封装、继承和多态性等特性。封装可以将数据和函数作为一个整体,实现数据的隐藏和保护;继承可以实现代码的复用和扩展;多态性可以让程序在运行时动态地选择调用哪个函数。原创 2024-06-04 15:24:24 · 1324 阅读 · 0 评论 -
C++基础与深度解析 | 泛型算法 | bind | Lambda表达式
泛型算法可以用于多种数据类型,避免了为每种数据类型重复编写相同或类似的代码。这不仅减少了开发时间,还减少了出错的可能性。原创 2024-05-26 12:39:35 · 977 阅读 · 0 评论 -
C++基础与深度解析 | 序列容器 | 关联容器 | 适配器与生成器
C++ 标准库提供了多种容器,它们是用于存储和操作数据集合的模板类。每种容器都有其特定的用途和特点,以及支持的基本操作。原创 2024-05-19 22:14:54 · 958 阅读 · 0 评论 -
C++基础与深度解析 | 动态内存管理 | 智能指针
相反,应该优先考虑使用标准库提供的工具和机制,如智能指针和自定义分配器,来满足特殊的内存管理需求。智能指针自动处理对象的生命周期,包括它们的构造、析构和内存释放,从而减少了内存泄漏和其他内存管理错误的风险。析构时,调用shared_ptr的析构函数,会先将引用计数的值减1,然后判断引用计数的值是否为0,如果为0,则调用delete来删除之前分配的内存。当一个动态分配的对象被所有引用它的指针释放后,如果没有适当的销毁和内存释放,该对象所占用的内存就无法被再次利用,从而导致内存泄漏。原创 2024-05-19 16:21:49 · 1107 阅读 · 0 评论 -
C++基础与深度解析 | 输入与输出 | 文件与内存操作 | 流的状态、定位与同步
IOStream 采用流式 I/O而非记录 I/O ,但可以在此基础上引入结构信息。C++中的IOStream库确实采用了流式I/O,而不是记录I/O。流式I/O是一种连续的、基于字符的I/O方式,它允许数据以一种连续的流的形式进行读写。这种方式与记录I/O相比,更加灵活,因为数据可以以任何顺序被读取或写入,而不需要事先知道数据的确切结构。在C++中,流式I/O是通过iostream库实现的,它提供了一系列的类和函数来处理输入和输出。这些类包括iostreamistreamostream。原创 2024-05-19 14:01:07 · 711 阅读 · 0 评论 -
C++基础与函数解析 | 函数的声明与定义 | 函数调用 | 函数详解 | 函数重载 | 重载解析 | 递归函数 | 内联函数 | 函数指针
基本的函数定义包括函数名称、形式参数、返回类型函数头函数名称-标识符,用于后续的调用字母数字组成:标识符只能由字母(大小写区分)、数字和下划线组成。不以数字开头:标识符不能以数字开头,必须以字母或下划线开始。大小写敏感:C++是大小写敏感的语言,因此identifier和Identifier是两个不同的标识符。保留字:不能使用C++的保留字作为标识符。例如,不能使用ifforint等关键字作为函数名或变量名。长度限制。原创 2024-05-16 00:01:14 · 1054 阅读 · 1 评论 -
C++基础与深度解析 | 语句 | 分支语句 | 循环语句 | 达夫设备
在标签下不能直接定义对象,会有编译错误。在标签下定义对象默认对象的作用域是整个switch语句,如果该标签后面还有下一个标签,则在执行下一个标签时就会跳过对象的初始化。原创 2024-05-15 00:52:22 · 924 阅读 · 0 评论 -
C++基础与深度解析 | 表达式 | 操作符
在C++中,操作符的结合性(associativity)描述了在没有括号的情况下,多个相同优先级的操作符如何应用到它们的操作数上。具有短路(short-circuit)特性,即如果第一个操作数为真,那么整个表达式的结果已经确定为真,编译器将不会对第二个操作数求值,因为无论第二个操作数的值是什么,都不影响最终结果。在C++中,大多数赋值操作符和条件表达式的操作符(如。,即如果第一个操作数为假,那么整个表达式的结果已经确定为假,编译器将不会对第二个操作数求值,因为无论第二个操作数的值是什么,都不影响最终结果。原创 2024-05-15 00:48:45 · 714 阅读 · 0 评论 -
C++基础与深度解析 | 数组 | vector | string
数组引用在函数参数传递、大型数据结构的传递等方面非常有用,因为它们允许函数直接操作传入的数组,而不是数组的副本。如果参数比较运算的指针是指向一个数组中的两个位置 ,是可以进行比较运算的;在C++中,如果数组是非静态的局部数组,其元素将包含未定义的值,因为它们没有默认初始化。是标准库中的一个类模板实例化,它提供了一个可变长度的字符序列,用于内建字符串的代替品。在C++中,多维数组的数组名可以被看作一个指向数组首元素的指针。C++不提供自动的数组范围检查,所以访问数组元素时应该确保索引不会超出数组的界限。原创 2024-05-14 00:10:02 · 727 阅读 · 0 评论 -
C++基础与深度解析 | 对象与基本类型 | 初始化/赋值语句 | 类型 | 复合类型 | 常量类型与常量表达式 | 类型别名与类型的自动推导 | 作用域与对象的生命周期
初始化 / 赋值语句是程序中最基本的操作,其功能是将某个值与一个对象关联起来。值(等号右边)可以是字面值,也可以是对象(变量或常量)所表示的值。表示对象的标识符(等号左边)可以是变量、常量、引用等。值与对象都有类型,并且需要注意的是:初始化/赋值可能涉及到类型转换。 初始化是在创建对象时给对象指定一个初始值的过程。初始化通常发生在对象的声明时,确保了对象在定义后就处于一个确定的状态。初始化的基本操作:首先,在内存中开辟空间,保存相应的数值;然后,在编译器中构造符号表,将标识符与相关内存空间关联起来。直原创 2024-05-14 00:06:29 · 631 阅读 · 0 评论 -
C++基础与深度解析 | 什么是C++ | C++开发环境与相关工具 | C++编译/链接模型
C++初步了解原创 2024-05-13 00:52:14 · 965 阅读 · 0 评论 -
C++基础与深度解析 | C++初探 | Hello World | 系统I/O | 控制流 | 结构体与自定义数据类型
在C++中,结构体(struct)是一种复合数据类型,它允许将不同的数据项组合成一个单一的实体。结构体在C++中有着广泛的应用,包括表示数据集合、实现数据封装以及作为函数参数传递等。定义结构体int a;double b;// 默认构造函数// 带有两个参数的构造函数// 全参构造函数初始化结构体结构体可以通过直接初始化或使用构造函数进行初始化,结构体的构造函数与结构体的名称相同,并且没有返回类型。// 直接初始化// 使用构造函数(如果定义了)使用结构体。原创 2024-05-13 01:06:20 · 654 阅读 · 0 评论