C++
文章平均质量分 92
主要讲解C++的基础知识
Kai2026
大学生一枚,C/C++,Linux在学,热爱玩游戏。
展开
-
C++---类型转换
或者在调用函数的时候,形参和实参类型不匹配,或者返回值类型与接收返回值类型不一致的时候,就需要发生类型转换。如果你在pstr中存了字符,在次输出a的时候,输出的会是ASCII码。C++兼容C语言,C语言中的类型转换放到C++中也可以使用,并且C++提出了自己的类型转换风格。dynamic_cast用于将一个父类对象的指针/引用转换为子类对象的指针或引用(动态转换)前面的多态和继承里面提到过切片操作,子类的指针类型或者引用类型可以赋值给父类。type是要转换的目标类型,expression是要转换的值。原创 2023-10-15 10:12:02 · 167 阅读 · 0 评论 -
C++11
在2003年C标准委员会曾经提交了一份技术勘误表(简称TC1),使得C03这个名字已经取代了C98称为C11之前的最新C标准名称。不过由于C03(TC1)主要是对C98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C98/03标准。从C0x到C11,C标准10年磨一剑,第二个真正意义上的标准珊珊来迟。相比于C98/03,C11则带来了数量可观的变化,其中包含了约140个新特性,以及对C03标准中约600个缺陷的修正,这使得C11更像是从C98/03中孕育出的一种新语言。原创 2023-10-14 15:03:53 · 814 阅读 · 0 评论 -
数据结构---AVL树
_left(nullptr)// 左孩子, _right(nullptr)// 右孩子, _parent(nullptr)// 父节点, _kv(kv)// 平衡因子,_bf(0){}原创 2023-09-20 16:34:07 · 296 阅读 · 0 评论 -
C++---异常处理
如果没有找到匹配的catch子句,终止该函数,并在调用该函数的函数中继续寻找。如果还是没有找到匹配的catch子句,这个新的函数也被终止,继续搜索调用它的函数。异常中断了程序的正常流程。在复杂的系统中,程序在遇到抛出异常的代码前,器质性路径可能已经经过了多个try语句块。如,一个try语句块可能调用了包含另一个try的语句块的函数,新的try语句块可能调用了包含有一个try语句块的新函数,以此类推。如果最终还是没有找到任何匹配的catch子句(也就是到达main函数的栈,依旧没有匹配的),程序转到名为。原创 2023-09-18 16:24:21 · 149 阅读 · 0 评论 -
C++---多态
在买火车票的时候,如果你是学生,是买半价票;普通人是全家买票,军人买票是优先买票。多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了Person。Person对象买票全家,Student对象买票半价。必须通过基类的指针或者引用调用虚函数被调用的函数必须是虚函数,切派生类必须对基类的虚函数进行重写。原创 2023-09-18 12:34:04 · 220 阅读 · 0 评论 -
数据结构---二叉搜索树
若它的左子树不为空,则左子树上的所有节点的 值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树根据这个性质,我们可以利用二叉搜索树进行高效的插入,删除和搜索操作。原创 2023-09-17 17:36:43 · 362 阅读 · 1 评论 -
C++---继承
在需要写Father类和Mother类的时候,需要给这两个类写一些属性,像名字,性别,年龄,爱好,电话,家庭地址等,这两个类中会有一些共同的属性,把这些公共的属性进行提取,封装成一个Person类,Father和Mother继承Person,就不需要在写共同的属性了。这就是本章要说的继承。继承机制是面向对象程序设计是代码可以复用的最重要的手段,它允许程序猿在保持原有类特性的基础上进行扩展,增加功能,这样产生的新的类,称为派生类。继承呈现了面向对象程序设计的层次结构。原创 2023-09-17 15:09:08 · 547 阅读 · 0 评论 -
C++stack_queue
queue适配器要求back,push_back,front,push_front,因此它的构造可以构造于list,deque之上,但是不能用vector,因为vector没有push_front等函数,但自己模拟实现的时候,强行用vector也是可以实现的。priority_queue除了front,push_back,pop_back操作之外,还要求随机访问能力,因此它可以再vector和deque的基础上构造,但不能用list,list不支持随机访问。对一个给定的适配器,可以使用哪些容器是有限制的。原创 2023-08-04 12:33:40 · 128 阅读 · 0 评论 -
C++---list常用接口和模拟实现
list是用双向带头联表实现的一个容器,双向联表中每个元素存在互不相关的独立节点中,再节点中通过指针指向其前一个元素和后一个元素,并且可以再常数范围内再任意位置进行插入和删除的序列式容器。原创 2023-08-02 15:52:55 · 951 阅读 · 0 评论 -
C++vector用法和模拟实现
vector是一种顺序容器,可变大小数组,也支持随机快速访问,在尾部之外的位置插入或者删除元素可能会变慢,因为vector的空间是连续的,在删除中间位置的元素或者在中间位置的插入元素代价会非常的大:每一次插入或者删除都需要移动插入或删除之后的所有元素。若空间不够了,需要扩容,在扩容的同时,需要把每个元素都移动到新空间里。模拟实现的话,在这里用的是指针。原创 2023-07-29 17:37:53 · 233 阅读 · 0 评论 -
C++---string模拟实现
前面我们已经对string进行了简单的介绍,只要会用各个函数即可,下面是string的模拟实现。构造,析构在这里我们可以定义一个自己的命名空间,防止与库里的string造成冲突。原创 2023-07-24 18:16:44 · 117 阅读 · 0 评论 -
C++---string
C++---string一文原创 2023-07-23 19:44:21 · 144 阅读 · 0 评论 -
C++内存管理
free(a2);return 0;输出结果是从结果中可以看出,new/delete和malloc/free最大区别是 前者对于自定义类型除了开空间,还会调用构造函数和析构函数。原创 2023-05-30 21:06:45 · 913 阅读 · 0 评论 -
C++模板初阶
面向对象编程(OOP)和泛型编程都能处理在编写程序时不知道类型的情况。不同之处在于:OOP能处理类型在程序运行之前都未知的情况;而在泛型编程中,在编译就能获知类型了。模板是泛型编程的基础。一个模板就是一个创建类或者函数的蓝图或者说是公式。当使用一个vector这样的泛型类型,或者find这样的泛型函数时,我们提供足够的信息,将蓝图转换为特定的类或者函数。class 类模板名// 类内成员定义public:, _t(-1){}~Stack();原创 2023-05-30 21:16:15 · 950 阅读 · 0 评论 -
C++类和对象下
专栏简介:本章为大家带来C++类和对象相关内容。原创 2023-05-14 22:25:45 · 446 阅读 · 3 评论 -
C++类和对象上
面向对象跟函数一样,是比较重要的内容。那什么是对象呢?现实生活中的对象:足球,人,手机,等一切物品都可以看作对象程序中的对象:现实生活中具体的事物那么把现实中的事物,转换成电脑程序的形式,所以在这里就提到了面向对象的概念那么面向对象的好处是什么呢?灵活性更高,如果代码出现问题,只需要更改出现问题的部分即可易维护易扩展类对象属性方法等等对象:张三的手机,王五的手机。手机就是具体的事物,而手机是对象的集合,那么就可以从对象中提取共同的特征,作为一个类别。原创 2023-05-08 21:52:39 · 484 阅读 · 0 评论 -
C/C++基础知识
C++是在C语言的基础上,添加了面向对象编程,使程序更加模块化,利于维护和扩展,还增加了很多标准库,库中包含了许多实用的数据结构,算法,容器,输入,输出等。命名空间是一种机制,可以将全局作用域划分为更小的独立作用域,从而利于解决命名冲突的问题。那么命名空间是如何创建的呢?// 变量、函数、类等定义int main()return 0;这样,就不会在出现由于命名冲突造成的警告了。但是怎么去访问test这块空间呢?这两个单词是什么意思呢?—使用命名空间同一个工程中可以存在多个相同名称的命名空间。原创 2023-04-25 22:21:16 · 695 阅读 · 1 评论 -
C/C++---前言
什么是C++C++的发展史C++的重要性C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机界提出了OOP(object oriented programming:面向对象)思想,支持面向对象的程序设计语言应运而生。1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。原创 2023-04-15 18:04:44 · 658 阅读 · 0 评论