![](https://img-blog.csdnimg.cn/44ece0210bf149e3b75f90d0754c052f.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++从入门到放弃
文章平均质量分 96
在C语言的基础上学习C++
情话0.0
在今天不断地学习,能够弥补昨天的缺失
展开
-
【C++从入门到放弃】模板进阶——非类型模板参数、类模板的特化、模板的分离编译
之前我已经写过一篇关于模板的博客,在之前那篇文章的基础之上再对模板进行补充。链接:模板初阶通常情况下,使用模板可以实现一些与类型无关的代码,但对于一些特殊类型的可能会得到一些错误的结果,需要特殊处理,比如:实现了一个专门用来进行日期大小比较的函数模板。// 函数模板 -- 参数匹配 template < class T > bool Greater(T left , T right) {// 可以比较,结果正确 Date d1(2023 , 6 , 20);原创 2023-06-25 15:15:24 · 389 阅读 · 17 评论 -
【C++从入门到放弃】stack和queue的深度剖析及空间适配器的介绍
此篇博客将谈及到的stack、queue和priority_queue都不是STL的标准容器,而是一种空间适配器。它是通过对一种容器进行封装,并且所有的方法全部由底层依赖的容器进行实现。stack是一种容器适配器,专门设计用于后进先出的上下文环境中,在这种环境中,元素只从容器的一端进行插入和提取操作。stack是作为容器适配器实现的,容器适配器即是对特定容器类的封装对象作为其底层容器的类,提供一组特定的成员函数来访问其元素。元素从特定容器的尾部(即堆栈的顶部)被压入/弹出。原创 2023-06-19 17:16:54 · 461 阅读 · 21 评论 -
【C++从入门到放弃】list深度剖析及模拟实现
list 是允许在序列内的任何位置进行常量时间的插入和删除操作的序列容器,并且该容器可以前后双向迭代。list 的底层为双链表结构,双链表可以将它们包含的每个元素存储在不同且不相关的存储位置,在节点中通过指针指向其前一个元素和后一个元素。list 与 forward_list 非常相似:主要区别在于 forward_list 是单链表,因此它们只能向前迭代,以让其更简单和更高效。与其他基本标准序列容器(array、vector和deque)相比,list 在容器内的任何位置插入、获取和移动元素。原创 2023-06-12 20:26:18 · 1438 阅读 · 32 评论 -
【C++从入门到放弃】string全方面分析(常用接口、模拟实现)
在学习C++的过程中,必定有一个非常重要的工具就是STL(标准模板库):C++标准库的重要组成部分,它不仅是一个可复用的组件库,而且还是一个包罗数据结构与算法的软件框架。接下来我会将STL中几个主要的容器进行总结。string类文档介绍字符串是表示字符序列的对象。标准string类通过类似于标准字节容器的接口为此类对象提供支持,但添加了专门用于操作单字节字符字符串的特性。原创 2023-04-09 18:58:10 · 644 阅读 · 33 评论 -
【C++从入门到放弃】模板介绍(函数模板、类模板)
函数模板代表了一个函数聚合体,该函数模板与参数类型无关,在函数调用的时候根据传参的类型将函数模板里的参数进行参数化,也就是根据实参类型产生函数的特定类型版本。template < class T1 , class T2 , . . . , class Tn > class 类模板名 {// 类内成员定义 };原创 2023-04-02 20:14:55 · 732 阅读 · 34 评论 -
【C++从入门到放弃】C/C++内存管理(new和delete的用法详解)
在学习C/C++内存管理之前,我们先看一下下面的代码与相关问题。free(ptr1);free(ptr3);选择题:选项: A.栈 B.堆 C.数据段(静态区) D.代码段(常量区)globalVar在哪里?____ staticGlobalVar在哪里?____staticVar在哪里?____ localVar在哪里?____num1 在哪里?____char2在哪里?____ *char2在哪里?___pChar3在哪里?原创 2023-03-29 23:12:45 · 983 阅读 · 30 评论 -
【C++从入门到放弃】类和对象(下)——(再识构造函数、static成员、友元、内部类、匿名对象、拷贝对象时的编译器优化)
此篇文章是在之前的基础上再对类和对象做一些补充在类和对象阶段,我们一定要体会到,类是对某一类实体(对象)来进行描述的,描述该对象具有哪些属性,哪些方法,描述完成后就形成了一种新的自定义类型,才用该自定义类型就可以实例化具体的对象。原创 2023-03-22 20:55:38 · 571 阅读 · 40 评论 -
【C++从入门到放弃】类和对象(中)———类的六大默认成员函数
在上一篇文章中提到过空类的存在,它的大小为一个字节,目的就是为了标识这个类的存在。但是空类中真的什么都没有吗?当然不是的,任何类在什么都不写时,编译器会自动生成以下六个默认成员函数。而这六个默认成员函数只会在用户没有显式定义的情况下被编译器自动生成,如若用户自己显示定义了这几个函数,那么编译器不会自动生成默认的成员函数。编译器自动生成的函数称为默认成员函数。以上就是对类的六大默认成员函数的简单介绍,掌握了这些知识,对后面的C++学习会有很大的步骤,我也相信自己会一步一步往前走,更上一层楼!原创 2023-03-03 21:28:45 · 497 阅读 · 27 评论 -
【C++从入门到放弃】类和对象(上)
在学习类和对象之前,我们要对面向过程和面向对象有一个初步的了解:C语言是面向过程的,面向过程所关注的是分析出解决问题的步骤,通过函数调用逐步解决问题;C++是面向对象的,面向对象是把构成问题事务分解成多个不同的对象,靠对象之间的交互完成,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。// 类体:由成员函数和成员变量组成 };// 一定要注意后面的分号class为定义类的关键字ClassName为类的名字{}中为类的主体,注意类定义结束时后面分号不能省略。原创 2023-02-26 22:10:28 · 623 阅读 · 37 评论 -
【C++从入门到放弃】初识C++(基础知识入门详解)
C++是一种计算机高级程序设计语言,由C语言扩展升级而产生,最早于1979年由本贾尼·斯特劳斯特卢普在AT&T贝尔工作室研发。C++既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计。C++拥有计算机运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。定义命名空间,需要使用到namespace关键字,后面再跟上。原创 2023-02-13 18:10:29 · 1170 阅读 · 33 评论