![](https://img-blog.csdnimg.cn/ee8dbdcf082e4702aec1663eaa6ae7b3.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++从零开始到精通
文章平均质量分 95
从零到c++精通的开发之路。适用于C++开发的小白,转行 c++开发,提升 C++的编程能力的所有人群。内容包括C++基础编程、C++中级编程、C++高级编程;掌握 C 各个知识点。
Lion Long
一个热爱分享高性能服务器后台开发知识的博主,目标是通过理论与代码实践的结合,让世界上看似难以掌握的技术变得易于理解与掌握。技能涵盖了多个领域,包括C/C++、Linux、Nginx、MySQL、Redis、fastdfs、kafka、Docker、TCP/IP、协程、DPDK等。
展开
-
【045】C++中map和multimap容器全面解析:深入学习,轻松掌握
在C++中,map和multimap容器是非常重要的数据结构,它们提供了一种键值对的映射关系,可以高效地组织和访问数据。map容器中的每个元素都包含一个键和一个值,而multimap容器允许键重复。这两种容器在实际项目中广泛应用,特别适合需要快速查找和插入元素的场景。其底层实现采用了红黑树等高效的数据结构,map和multimap容器在处理大量数据时具有良好的性能表现。它们也提供了丰富的操作方法和函数,可以轻松地对容器中的数据进行插入、删除、查找和遍历操作。原创 2024-01-13 18:44:50 · 2051 阅读 · 25 评论 -
【044】深入探索STL:解密set与multiset容器的神秘力量
STL(Standard Template Library)中的set和multiset是两种常用的关联容器,用于存储一组有序且唯一的元素。setset是一个有序容器,其中的元素按照特定的排序准则进行排序。每个元素在set中只能存在一次,重复的插入将无效。使用二叉搜索树(红黑树)数据结构来实现元素的存储和检索,因此其插入、删除和查找操作的平均时间复杂度为O(logN),其中N是元素的数量。set中的元素默认以升序排列,也可以自定义排序规则。multisetmultiset与set类似,但。原创 2023-07-26 08:30:00 · 255 阅读 · 2 评论 -
【043】解密C++ STL:深入理解并使用 list 容器
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。相较于vector的连续线性空间,list就显得负责许多,它的好处是每次插入或者删除一个元素,就是配置或者释放一个元素的空间。因此,list对于空间的运用有绝对的精准,一点也不浪费。原创 2023-07-23 16:05:07 · 554 阅读 · 7 评论 -
【042】解密C++ STL:深入理解并使用queue容器
queue是一种常见的容器数据结构,它可以用来存储一组元素,遵循先进先出(First-In-First-Out,FIFO)的原则。简单来说,最先进入队列的元素将会最先被移除,而最后进入队列的元素将会最后被移除。queue容器的主要特点包括:先进先出原则:队列是按照元素的进入顺序进行处理的。新元素被添加到队列的尾部,而从队列中移除元素是从队列的头部进行的。有限大小:通常情况下,queue容器的大小是有限的。原创 2023-07-20 22:12:06 · 312 阅读 · 10 评论 -
【041】从零开始:逐步学习使用C++ STL中的stack容器
stack是一种先进后出(First In Last OutFILO)的数据结构,它只有一个出口,形式如图所示。stack容器允许新增元素,移除元素,取得栈顶元素,但是除了最顶端外,没有任何其他方法可以存取stack的其他元素。换言之,stack不允许有遍历行为。有元素入栈的操作称为:push,将元素推出stack 的操作称为pop。Stack所有元素的进出都必须符合"先进后出"的条件,只有stack顶端的元素,才有机会被外界取用。Stack不提供遍历功能,也不提供迭代器。深入讲解了C++ STL中的。原创 2023-07-18 23:06:12 · 1066 阅读 · 1 评论 -
【040】巧妙地穿梭双端:掌握C++ STL中deque容器的强大功能
deque(双端队列)是C++ STL(Standard Template Library)中的一个容器,它提供了高效的插入和删除操作,并且支持在两端进行快速访问的能力。与vector相比,deque具有更好的插入和删除性能,尤其是在容器的前端。这是因为deque在内部实现上采用了一块连续的存储区,并结合了多个缓冲区,使得插入和删除操作能够在任意位置进行,而不会导致整个容器的元素移动。Vector容器是单向开口的连续内存空间,deque则是一种双向开口的连续线性空间。原创 2023-07-16 18:00:15 · 384 阅读 · 9 评论 -
【039】掌握Vector容器:C++中最强大的动态数组
vector的数据安排以及操作方式与array非常相似,两者的唯一差别在于空间的运用的灵活性。Array是静态空间,一旦配置了就不能改变,要换大一点或者小一点的空间,是被允许的,但是一切琐碎得由自己来,首先配置一块新的空间,然后将旧空间的数据搬往新空间,再释放原来的空间。vector是动态空间,随着元素的加入,它的内部机制会自动扩充空间以容纳新元素。因此 vector的运用对于内存的合理利用与运用的灵活性有很大的帮助,再也不必害怕空间不足而一开始就要求一个大块头的array了。原创 2023-07-16 00:58:14 · 396 阅读 · 1 评论 -
【038】解码C++ STL:探索string容器的无限可能与鲜为人知的技巧
C++ STL(Standard Template Library)是C++标准库的一部分,它提供了一套丰富而强大的模板类和函数,用于处理常见的数据结构和算法问题。STL的设计目标是提供高效、通用、可重用的组件,以支持现代C++编程。STL包含了一系列容器、迭代器、算法和函数对象等组件,每个组件都有明确定义的功能和接口。其中,容器用于存储和管理数据,迭代器用于访问容器中的元素,算法用于对容器进行各种操作,函数对象则用于定义可调用对象,以在算法中进行自定义操作。原创 2023-07-12 22:44:57 · 252 阅读 · 12 评论 -
【037】从异常到优雅的错误处理:揭秘C++异常机制的神奇力量
C++的异常机制是一种用于处理程序中的错误和异常情况的机制。以下是对C++异常机制的总结:抛出异常:当程序发生错误或异常情况时,可以使用throw语句抛出一个异常。异常可以是任何类型的对象,但通常是标准库定义的异常类的实例。捕获异常:使用try和catch语句块来捕获和处理异常。在try块中放置可能抛出异常的代码,而在catch块中处理异常。catch块根据捕获的异常类型来执行相应的处理逻辑。异常处理顺序:当发生异常时,C++按照try块中代码的顺序查找适合的catch块来处理异常。如果找到相应的。原创 2023-07-08 23:14:04 · 415 阅读 · 3 评论 -
【036】读懂C++的强制类型转换static_cast、const_cast、dynamic_cast以及reinterpret_cast
标准C++提供了一个显式的转换语法,用来代替C语言风格的类型转换。使用C语言风格的强制转换可以把想要的任何东西转换成我们需要的类型。新类型的强制转换可以提供更好的控制强制转换过程,允许控制各种不同类型的强制转换。C++风格的强制转换的好处:能更清晰的表明它们要干什么。开发者只要看一眼这样的代码,就能够立即知道一个强制转换目的。C++中的类型转换允许将一个数据类型转换为另一个数据类型。C++提供了多种类型转换操作符和函数来执行不同类型之间的转换。原创 2023-07-05 23:19:14 · 414 阅读 · 3 评论 -
【035】C++泛型编程(模板)实践:设计数组类模板模仿vector容器
C++ 类模板是一种用于创建通用类的机制,它可以让程序员编写一次类,然后让它适用于多种类型,在实际编程中非常实用。类模板和函数模板的定义和使用类似。有时,有两个或多个类,其功能是相同的,仅仅是数据类型不同,类模板用于实现类所需数据的类型参数化。类模板的定义方式类似于普通类的定义,只是需要在类名后面添加一对尖括号,其中包含类型参数列表。设计一个数组类模板,可以存放任意数据类型。C++ 的标准库中提供了容器,它是一个动态数组,能够在运行时根据需要动态调整大小。如果想要实现一个类似于。原创 2023-07-04 23:25:34 · 249 阅读 · 1 评论 -
【034】C++泛型编程(模板)之 类模板详解(最全讲解)
C++ 类模板是一种用于创建通用类的机制,它可以让程序员编写一次类,然后让它适用于多种类型,在实际编程中非常实用。类模板和函数模板的定义和使用类似。有时,有两个或多个类,其功能是相同的,仅仅是数据类型不同,类模板用于实现类所需数据的类型参数化。类模板的定义方式类似于普通类的定义,只是需要在类名后面添加一对尖括号,其中包含类型参数列表。public :// 构造函数、析构函数、入栈、出栈等函数 private :T * data;int top;其中,template关键字用于声明类模板,原创 2023-07-03 08:53:27 · 4258 阅读 · 2 评论 -
【033】C++泛型编程(模板)之函数模板详解
C++提供了函数模板(function template)。函数模板实际上是建立一个通用函数,其函数类型和形参不具体指定,用一个虚拟的类型来代表,这个通过函数就成为函数模板。凡是函数体相同的函数都可以用函数模板替代,不必定义多个函数,只需要在模板中定义一次即可。在调用函数时系统会根据实参的类型来期待模板中的虚拟类型,从而实现不同函数的功能。C++提供两种模板机制:函数模板和类模板。类属于类型参数化,又称参数模板。C++面向对象编程思想:封装、继承、多态。C++泛型编程思想:模板。原创 2023-07-02 14:03:16 · 365 阅读 · 9 评论 -
【033】C++ 多态技术深度解析:理解虚函数与纯虚函数(最全讲解)
虚函数是一种在基类中声明的函数,它在派生类中可以被重写(覆盖)的函数。在基类中使用关键字“virtual”声明的函数就是虚函数。虚函数通过动态绑定实现了多态性,使得程序可以根据实际对象类型来调用相应的函数。在运行时,系统会根据被调用的对象的类型来确定调用哪一个重写函数。虚函数是C++中实现多态的关键所在。定义方式:在成员函数前面加virtual修饰。注意:子类重写父类的虚函数时,返回值类型、参数类型、个数顺序 必须完全一致。多态的条件:有继承、子类重写父类的虚函数、父类指针指向子类空间。原创 2023-06-26 16:38:32 · 328 阅读 · 9 评论 -
【032】C++高级开发:深入理解C++继承机制(最全讲解)
C++继承机制是面向对象编程的核心概念之一,它通过子类继承父类的属性和方法实现代码复用和扩展。以下是C++继承机制的总结:(1) 继承类型。C++中有3种继承类型:公有继承、私有继承和保护继承。(4)虚继承。当存在多个继承路径时,可能会导致同一个父类在内存中有多个拷贝,造成浪费和不一致。此时可以使用虚继承(virtual inheritance),让所有从同一基类派生出来的子类共享该基类,在内存中只保留一个拷贝。(5)多重继承。C++允许同时从多个父类继承属性和方法,称为多重继承。但需要注意解决命原创 2023-06-25 16:06:21 · 339 阅读 · 7 评论 -
【031】从基础到实践:深入解析C++运算符重载全攻略
C++重载运算符是一种允许程序员自定义运算符行为的机制。通过重载运算符,我们可以定义自己的类类型,并使其支持像加、减、乘等运算符,以及比较运算符等。在 C++ 中,有些运算符可以被重载(如 +, -, *, / 等),而有些则不能被重载(如 .,?: 等)。对于可以被重载的运算符,我们只需要按照一定的规则来实现相应的函数即可。重载函数必须是一个成员函数或者友元函数。如果是成员函数,则第一个参数必须是当前对象的引用或指针;如果是友元函数,则没有这个限制。不同的运算符要求不同的参数个数和类型。原创 2023-06-23 15:35:49 · 384 阅读 · 11 评论 -
【030】深入理解C++中的友元机制(friend)与最佳实践
C++中,友元(friend)是一种机制,它允许一个类的非成员函数或另一个类访问该类的私有成员。友元可以在类定义中声明,在类定义外部实现。类的主要特点之一是数据隐藏,即类的私有成员无法在类的外部作用域之外访问。但是有时候需要在类的外部访问类的私有成员,因此出现了友元函数;友元函数是一种特权函数,允许访问私有成员。可以把一个全局函数、或者类的成员函数、甚至整个类声明为友元。需要注意的是,友元机制破坏了类的封装性,因此应该谨慎使用。如果过度使用友元机制,会导致代码难以维护和扩展。原创 2023-06-21 22:58:20 · 700 阅读 · 4 评论 -
【029】C++类对象中的静态成员和 this 指针详解
静态成员是类的属性,属于整个类而不是类的对象。可以在任何对象中访问它们,但不需要创建实例即可使用它们。使用静态成员变量时,必须在其前面加上“类名::”来指定其作用域。例如:ClassName::staticMemberVariable。静态成员函数也属于整个类,可以直接通过类名调用,并且不能访问非静态成员变量和函数。静态成员变量只有一个副本,在所有对象之间共享。当类的一个对象修改了这个变量时,其他对象也会受到影响。this 指针是指向当前对象的指针,在成员函数内部使用。原创 2023-06-18 22:33:58 · 381 阅读 · 0 评论 -
【028】深入理解C++ 类和对象:构造、析构、拷贝构造、初始化列表 详解(最全讲解)
C++构造函数是一种特殊的成员函数,用于初始化类的对象。它们具有与类名称相同的名称,并且不返回任何值(包括void)。它们可以带有参数或不带参数,根据需要进行重载。当创建一个类对象时,构造函数会被自动调用。如果没有定义构造函数,则编译器会提供一个默认的构造函数。默认构造函数不执行任何操作,但确保对象被正确初始化。在构造函数中,可以对数据成员进行初始化、分配内存空间和执行其他必要的操作类实例化对象的时候,系统自动调用构造函数,完成对象的初始化。原创 2023-06-15 23:06:35 · 602 阅读 · 9 评论 -
【027】C++类和对象的基本概念:封装、定义、设计与实现
本文深入浅出地介绍了 C++ 类,从封装性、定义、设计到实现,循序渐进地讲解了 C++ 类在面向对象编程中的重要作用。文章首先阐述了类封装性的概念和优势,包括数据隐藏、可控制性、简化编程和提高安全性。接着,详细讲解了 C++ 类定义的语法和格式,并通过实例演示了如何定义一个类。随后,文章以 Person 和 Cube 类为例,展示了如何设计一个类,并提供了设计步骤和代码示例。最后,文章介绍了类成员函数在类内和类外实现的方法,以及如何在多文件中实现类,并总结了 C++ 类在面向对象编程中的应用和优势。原创 2023-06-14 09:22:29 · 356 阅读 · 9 评论 -
【026】C++ 函数进阶:内联函数、重载、默认参数、占位参数
本文深入浅出地介绍了 C++ 中函数的几个重要概念:内联函数、函数重载、默认参数、占位参数以及 extern "C。首先,文章详细阐述了内联函数的定义、语法、使用场景以及注意事项,并与宏函数进行了对比。接着,文章介绍了函数重载的概念、实现原理以及使用条件,并解释了为什么返回值不能作为重载的条件。然后,文章讲解了函数默认参数的定义、使用方法以及需要注意的细节,并展示了默认参数与函数重载同时出现时可能产生的二义性问题。此外,文章还介绍了占位参数的概念、作用以及使用场景,阐述了 extern "C 的作用原创 2023-06-13 08:27:55 · 360 阅读 · 6 评论 -
【025】C++对C的扩展之引用(reference):让你的代码“指哪打哪”
引用是一个别名,可以将一个变量与另一个变量关联起来。通过引用,我们可以使用两个不同的名称访问相同的数据。引用必须在定义时初始化,一旦引用被初始化为一个对象,它就不能再绑定到另一个对象上了。引用作为函数参数传递时,可以避免复制大型对象的开销,并且可以直接修改原始对象。可以使用const修饰符使引用成为只读引用,这样就无法通过该引用修改原始数据。引用还可以返回函数中的值或对象,在这种情况下,函数返回类型必须是引用类型。指向常量的指针和常量引用之间有所不同:前者可重新赋值而后者不能重新赋值。原创 2023-06-12 09:05:29 · 536 阅读 · 0 评论 -
【024】C++ 命名空间:代码中的“隔离墙”
C++命名空间(namespace)是一种将标识符封装起来的机制,以避免命名冲突和全局污染。通过在命名空间中定义变量、函数、类等,可以使得这些标识符只在该命名空间内可见,从而避免与其他代码产生冲突。原创 2023-06-11 12:49:54 · 431 阅读 · 2 评论 -
【023】C/C++数据结构之链表及其实战应用
链表(Linked List)是一种常见的数据结构,它由若干个节点(Node)组成,每个节点包含一个数据元素和指向下一个节点的指针。相邻两个节点之间通过指针连接起来,形成了链式结构。链表可以分为单向链表、双向链表和循环链表三种类型。其中单向链表每个节点只有一个指向下一个节点的指针;双向链表每个节点除了有指向下一个节点的指针外,还有指向前一个节点的指针;循环链表则是将最后一个节点的指针指向头结点,使得整个链条形成了一个闭环。原创 2023-06-09 09:55:54 · 774 阅读 · 0 评论 -
【022】C++的结构体、共用体以及枚举详解(最全讲解)
结构体是一种自定义的数据类型,它可以包含多个不同的数据类型的成员。结构体允许用户将相关的数据项组合在一起形成一个单独的实体,并可以对该实体进行操作。结构体通常被用于表示复杂的对象或记录,如人员信息、学生档案等等。结构体由一个或多个成员变量组成,每个成员变量都可以有不同的数据类型和名字。结构体也可以嵌套定义在其他结构体中,以实现更复杂的数据模型。在 C/C++ 语言中,结构体是一种非常重要的数据类型,在很多编程领域都得到了广泛应用。int num;char sex;int age;原创 2023-06-07 11:55:40 · 733 阅读 · 0 评论 -
【021】C/C++ 语言初学者必备:字符串处理函数入门
strlen:计算字符串的长度,即字符数组中不包括'\0'字符的字符数。strcpy:将一个字符串复制到另一个字符串中,包括'\0'在内。strncpy:将一个字符串的前n个字符复制到另一个字符串中,如果源字符串长度小于n,则会在末尾加上'\0'。strcat:将两个字符串连接起来,即将第二个字符串拼接到第一个字符串后面,并在末尾添加'\0'。strncat:将两个字符串的前n个字符连接起来,如果源字符串长度小于n,则会在末尾添加'\0'。strcmp:比较两个字符串是否相等,返回值为0表示相等。原创 2023-06-06 09:55:25 · 557 阅读 · 0 评论 -
【020】C++ 动态内存分配:new 和 delete 的正确使用
C++中的动态内存分配是在程序运行时根据需要进行内存空间的分配和释放,与静态内存分配相比,具有更大的灵活性和适应性。动态内存分配可以通过new和delete或者malloc()和free()等函数实现。在程序运行时无法确定所需的内存大小。需要在多个函数之间共享数据,并且数据可能被频繁地创建和销毁。静态数组无法满足需求,例如需要支持可变长度数组。如果在动态分配内存后忘记了释放它,则会导致内存泄漏。为避免内存泄漏,可以使用智能指针或手动管理内存的方式来释放动态分配的内存。原创 2023-06-05 10:36:22 · 773 阅读 · 0 评论 -
【019】C++ 中的强大组合:指针与函数
C++中指针和函数有着紧密的联系,指针可以用来存储函数的地址,通过指针调用函数或者将函数作为参数传递给其他函数。原创 2023-06-04 11:13:54 · 896 阅读 · 0 评论 -
【018】指针的指针: C++ 指针数组、数组指针深入解析
指针数组和数组指针是C++中比较常见的两种概念,它们都与数组和指针有关。指针数组:指针数组是一个数组,其中每个元素都是一个指针。数组指针本质上是指针变量;保存的是数组的首地址。数组指针+1跳过的是整个数组。原创 2023-06-03 20:29:26 · 657 阅读 · 0 评论 -
【017】C++ 指针变量详解:内存访问的奥秘
对于32位平台的进程,其内存空间大小限制为4GB(2的32次方),其中1GB是操作系统保留的虚拟地址空间。因此,32位进程最多只能使用3GB的内存空间。而对于64位平台的进程,其内存空间大小限制高达16EB(2的64次方),实际上远远超过了目前可用的物理内存容量。这意味着64位进程可以利用更多的内存资源来提高应用程序性能和响应速度。系统为内存的每一个字节分配32 bit / 64 bit 的地址编码(虚拟地址),这个编号称为地址。原创 2023-05-31 09:56:43 · 1999 阅读 · 0 评论 -
【016】C++ 预处理:内存分区、变量存储、头文件、宏,你都掌握了吗?
C++预处理器是一个非常重要的编译阶段,它在源代码被编译之前对源代码进行一些操作。#define:定义宏常量或宏函数,可以提高代码的可读性和可维护性。:条件编译指令,用于根据条件选择是否编译某段代码。#include:包含头文件,将其他源代码文件中的定义导入到当前文件中以供使用。#pragma:通用预处理命令,用于指示编译器执行特定的动作或更改默认行为。#error:产生错误消息并停止编译过程。#undef:取消已定义的宏。除了上述常见预处理指令外,C++还有一些其他的预处理功能,例如。原创 2023-05-29 13:38:55 · 722 阅读 · 0 评论 -
【015】C++ 编程的核心技能:函数,你真的了解它吗?
C++ 函数是一个可以重复使用的代码块,它们通常包含了一些指令和算法,用于实现特定的任务。函数能够提高程序的模块化程度,使代码更加清晰简洁、易于维护。函数是c语言的功能单位,实现一个功能可以封装一个函数来实现。定义函数的时候以功能为目的,根据功能去定函数的参数和返回值。返回类型:函数返回值类型函数名:函数名称参数列表:传递给函数的参数及其数据类型函数体:执行具体任务的代码块返回类型:函数返回值类型函数名:函数名称参数列表:传递给函数的参数及其数据类型。原创 2023-05-28 20:43:42 · 676 阅读 · 1 评论 -
【014】一维、二维字符数组:你不知道的C++ 字符串存储奥秘!
C++ 中的一维字符数组和二维字符数组都是常用的数据类型,它们可以存储和操作大量字符数据。初始化方式:直接赋值或循环赋值访问方式:使用下标访问(从 0 开始)初始化方式:直接赋值或循环赋值访问方式:使用双重循环遍历每个元素,先遍历行数再遍历列数。原创 2023-05-27 19:37:02 · 1566 阅读 · 1 评论 -
【013】C++数组之一维数值数组和二维数值数组的概念和操作方法
数组名和[]表示数组。将数组的个数放入[]中。用元素类型定义一个变量。数组的大小定义时必须指定,并且不可更改。int arr[5];// 定义一个包含5个整型元素的数组// 定义一个包含10个单精度浮点型元素的数组// 不指定数组大小,直接用花括号赋值// 定义一个包含100个字符元素的数组,并初始化为字符串"Hello World"以上示例中,第一个和第二个示例分别定义了一个整型和单精度浮点型的一维数值数组。第三个示例使用了花括号对数组进行初始化,编译器会自动计算出该数组大小为4。原创 2023-05-26 11:24:01 · 1425 阅读 · 1 评论 -
【012】细数C++循环控制:for、while、do-while,看看你掌握了多少?
C++提供了三种循环控制语句:for循环、while循环和do-while循环。它们的主要区别在于条件判断的位置和执行顺序。下面对这三种循环控制语句进行总结:for循环。for循环通常用于已知重复次数的情况下,在for循环中,初始化表达式只会在第一次迭代前执行一次,更新表达式则在每次迭代后执行一次。只有当条件表达式为true时,才会进入待执行的语句块。while循环。原创 2023-05-25 08:30:00 · 1589 阅读 · 2 评论 -
【011】C++条件控制语句全解析:if、switch一网打尽!
在C++编程中,条件控制语句是至关重要的部分,能够根据不同的条件执行相应的代码路径。本文深入探讨了C++中最常用的条件控制语句:if语句和switch语句。首先介绍了它们的基本语法和用法,包括if语句的单条件、双条件和多条件形式,以及switch语句的多路分支控制。然后,通过丰富的示例和场景说明,展示了在实际编程中如何灵活运用这些语句,提高代码的效率和可读性。原创 2023-05-24 08:30:00 · 1379 阅读 · 1 评论 -
【010】掌握C++运算符:编程基础的深入研究
本文深入探讨了C++中的各种运算符,从基本的算术运算符到复杂的位运算符和条件运算符。通过详细的解释和示例代码,了解了这些运算符的功能、用法和注意事项。原创 2023-05-23 08:30:00 · 2934 阅读 · 3 评论 -
【009】探索C++中的转义字符和类型转换:发现编程的魔法
本文深入探讨了C++中的转义字符和类型转换,从基础概念到高级应用,为读者呈现了一个完整的指南。首先,我们介绍了转义字符的概念及常见用法,探讨了转义字符在C++中的重要性和实际应用场景。其次,我们详细分析了八进制和十六进制转义的规则和用法,帮助读者更好地理解这些特殊转义方式。然后,我们深入探讨了类型转换的原理和机制,包括自动转换和强制转换,以及它们在不同场景下的应用和影响。接着,我们介绍了C++中类型转换的新特性和扩展,包括隐式转换和显式转换,以及这些转换方法的具体用法和示例。原创 2023-05-22 08:30:00 · 1197 阅读 · 2 评论 -
【008】C++必备知识:const、volatile和sizeof等重要关键字的秘密功能细说
C++中的一些重要关键字:auto:用于自动推断变量类型。const:用于定义常量,表示变量的值不可更改。static:用于静态变量和静态函数的声明。extern:用于声明在其他文件中定义的全局变量或函数。inline:用于行内函数的定义。friend:用于声明友元函数或友元类。virtual:用于定义虚函数,实现多态性。new/delete:用于动态分配和释放内存。try/catch/throw:用于异常处理。typedef:用于给已有类型定义一个别名。原创 2023-05-21 09:30:00 · 599 阅读 · 6 评论 -
【007】C++编程必知:原码、补码、反码的全面解读
计算机存储的是数据的补码。原码:计算机中对数字的二进制定点表示方法。比如123的原码是0111 1011。无符号数:原码=反码=补码。有符号数:要分正数和负数,正数的最高位为0,负数的最高位为1。其中,正数的原码、反码、补码都是相同的;负数的反码等于原码的符号数(最高位)不变,其他位取反;补码等于反码+1。比如:-123的原码是1111 1011,反码为1000 0100,补码为1000 0101。原码、补码和反码都是用于计算机表示有符号整数的方法。原创 2023-05-20 09:30:00 · 1598 阅读 · 20 评论