C++
文章平均质量分 52
温柔有度
生命如同寓言,其价值不再长短,而在内容!
展开
-
函数对象、谓词
1. 函数对象就是类中重载了(),operator()函数,可以像函数一样调用,所以我们也把函数对象叫做仿函数2. 谓词谓词是指普通函数或重载的operator()返回值是bool类型的函数对象(仿函数)。如果operator 接受一个参数,那么叫做一元谓词,如果接受两个参数,那么叫做二元谓词,谓词可作为一个判断式。原创 2024-04-22 15:54:40 · 232 阅读 · 0 评论 -
deque容器
/重新指定容器的长度为num,若容器变长,则以elem值填充新位置,如果 容器变短,则末尾超出容器长度的元素被删除。//在pos位置插入[beg,end)区间的数据,无返回值。//在pos位置插入一个elem元素的拷贝,返回新数据的位置。//构造函数将[beg, end)区间中的元素拷贝给本身。//删除[beg,end)区间的数据,返回下一个数据的位置。//将[beg, end)区间中的数据拷贝赋值给本身。原创 2024-04-22 14:16:41 · 636 阅读 · 0 评论 -
vector容器
Vector的实现技术,关键在于其对大小的控制以及重新配置时的数据移动效率,一旦vector 旧空间满了,如果客户每新增一个元素,vector内部只是扩充一个元素的空间,实为不智,因为所谓的扩充空间(不论多大),一如刚所说,是”配置新空间‐数据移动‐释放旧空间”的大工程,时间成本很高,应该加入某种未雨绸缪的考虑,稍后我们便可以看到vector的空间配置策略。为了降低空间配置时的速度成本,vector实际配置的大小可能比客户端需求大一些,以备将来可能的扩充,这边是容量的概念。//将vec与本身的元素互换。原创 2024-04-22 11:49:08 · 816 阅读 · 0 评论 -
string容器
u String 封装了很多实用的成员方法:查找 find,拷贝 copy,删除 delete 替换 replace,插入 insert;每一次 string 的复制,取值都由 string 类负责维护,不用担心复制越界和取值越界等。C风格字符串(以空字符结尾的字符数组)太过复杂难于掌握,不适合大程序的开发,所以C++标准库定义了一种string 类,定义在头文件。u Char*是一个指针,String 是一个类 string 封装了 char,管理这个字符串,是一个。类型字符串赋值给当前的字符串。原创 2024-04-22 01:57:30 · 564 阅读 · 0 评论 -
STL的基本概述
长久以来,软件界一直希望建立一种可重复利用的东西,以及一种得以制造出”可重复运用的东西”的方法,让程序员的心血不止于随时间的迁移,人事异动而烟消云散,从函数(functions),类别(classes),函数库(function libraries), 类别库(class libraries)、各种组件,从模块化设计,到面向对象(object oriented ),为的就是复用性的提升。复用性必须建立在某种标准之上。原创 2024-04-22 01:15:47 · 588 阅读 · 0 评论 -
C++异常
1. 异常的基本概念异常: 出错后,将出错问题返回给调用处,c语言的异常处理比较简单,容易出错,c++处理异常不容易出错。2. 代码实现3. 栈解旋在try到throw之间定义的对象,在throw之后会被释放4. 异常变量生命周期抛出的匿名对象的生命周期在catch里面。原创 2024-04-20 23:33:09 · 154 阅读 · 0 评论 -
C++类型转换
static_cast可以用来转换基本的内置数据类型 int char double...static_cast可以用来转换发送继承关系之间的类,但是不保存安全性。dynamic_cast:一般用来转发生继承关系之间的自定义的数据类型。可以用于转换发送继承关系之间的类,保证转换是安全的,子转父是可以的。const_cast :一般用来转换加const和去除const。static_cast:一般用来转换内置的基本数据类型。static_cast<待转换的类型>(待转换的数据)不能用于转换基本的数据类型。原创 2024-04-20 21:02:44 · 361 阅读 · 0 评论 -
C++模版
函数模板: 形参的类型不具体指定,用通用类型代替,在调用时,编译器会根据实参的类型推导出形参的类型(类型参数化)//函数模板来实现template //定义一个模板 模板的通用类型为T//紧跟函数的定义T temp = a;a = b;b = temp;char a = 1;char b = 2;int c = 3;int d = 4;//自动推导//显示指定类型自动类型推导的结果不一致2. 函数模版和普通函数区别函数模版:不能进行自动类型转换。原创 2024-04-18 14:09:22 · 525 阅读 · 0 评论 -
纯虚函数于纯虚析构函数
多继承带来了一些争议,但是接口继承可以说一种毫无争议的运用了。绝大数面向对象语言都不支持多继承,但是绝大数面向对象对象语言都支持接口的概念, C++中没有接口的概念,但是可以通过纯虚函数实现接口。接口类只是一个功能声明,并不是功能实现,子类需要根据功能说明定义功能实现。纯虚函数:将虚函数等于0 ,实质是将虚函数表的函数入口地址置为NULL;抽象类:一个类中如果有纯虚函数,那么这个类就是一个抽象类;作用:在调用基类的析构函数之前,会先调用子类的析构函。注意:除了析构函数外,其他声明都是纯虚函数。原创 2024-04-18 10:36:50 · 500 阅读 · 0 评论 -
多继承与多态
多继承带来了一些争议,但是接口继承可以说一种毫无争议的运用了。绝大数面向对象语言都不支持多继承,但是绝大数面向对象对象语言都支持接口的概念, C++中没有接口的概念,但是可以通过纯虚函数实现接口。接口类只是一个功能声明,并不是功能实现,子类需要根据功能说明定义功能实现。抽象类不能实例化对象继承抽象类的子类也是一个抽象类,如果子类重写了虚函数,那么子类就不是抽象类。纯虚函数:将虚函数等于0 ,实质是将虚函数表的函数入口地址置为NULL;抽象类:一个类中如果有纯虚函数,那么这个类就是一个抽象类;原创 2024-04-18 10:31:20 · 274 阅读 · 0 评论 -
继承的概述
Class 派生类名 : 继承方式 基类名// 派生类新增的数据成员和成员函数。原创 2024-04-17 19:16:09 · 296 阅读 · 0 评论 -
C++优先级
优先级和结合性。原创 2024-04-17 17:47:44 · 83 阅读 · 0 评论 -
运算符的使用
前置++返回的是引用后置++返回的是对象前置++调用 type& operator++() 函数后置++调用的是 type& operator++(int) 函数,后置++多了一个占位参数int=, [], () 和 ‐> 操作符只能通过成员函数进行重载>只能通过全局函数配合友元函数进行重载不要重载 && 和 || 操作符,因为无法实现短路规则常规建议。原创 2024-04-17 17:42:42 · 398 阅读 · 0 评论 -
友元的概述
即类的私有成员无法在类的外部(作用域之外)访问。但是,有时候需要在类的外部访问类的私有成员,怎么办?友元函数是一种特权函数,c++允许这个特权函数访问私有成员。如果想要让全局函数或一个类的成员函数访问另一个类私有成。类成为另一个类的友元,类的成员函数成为另一个类的友元。2.1 全局函数成为类的友元。类的主要特点之一是数据隐藏。解决方法是使用友元函数,员,只需要声明友元即可。原创 2024-04-17 11:34:29 · 214 阅读 · 0 评论 -
this指针
type * const this,代表不能通过this指针去修改this指针指 向对象的内容。类的成员函数默认编译器都加上了一个this指针,这个this指针指向调用该成员函数的对象。1. 在函数后面加上const,这个是一个常函数。这个const修饰的是指针。原创 2024-04-17 10:49:46 · 258 阅读 · 0 评论 -
类中成员变量和函数储存
类对象成员:静态成员变量不占用对象空间大小。类对象成员:普通成员函数不占用对象空间大小。类对象成员:静态成员函数不占用对象空间大小。类对象成员:普通成员变量占用对象空间大小。成员变量和函数的存储。原创 2024-04-17 10:08:01 · 459 阅读 · 0 评论 -
静态成员和静态函数
1.1 在类定义中,它的成员(包括成员变量和成员函数),这些成员可以用关键字static声明为静态的,称为静态成员。1.2 不管这个类创建了多少个对象,静态成员只有一个拷贝,这个拷贝被所有属于这个类的对象共享。const修饰的静态成员变量保存在常量区,只读的,在内存中只。将静态的成员指针变量私有化,提供获得唯一对象的地址的静态接口。静态成员函数能访问静态成员变量,不能访问普通的成员变量;const修饰的静态成员变量可以通过类的作用域访问。2. 可以通过类的作用域访问静态成员函数,原创 2024-04-17 00:32:17 · 733 阅读 · 0 评论 -
动态对象创建
在C++中,使用malloc和free函数,去动态申请对象和是放过对象,不会调用构造函数和析构函数。原创 2024-04-16 22:36:39 · 155 阅读 · 0 评论 -
多个对象构造和析构
1. 初始化列表注意:1.1 初始化列表,先声明,在调用构造函数时定义并初始化 ,定义初始化的顺序和声明的顺序一致。1.2 代码实现1.3 普通的构造函数,先定义,在赋值1.4 代码实现2.类对象成为另一个类的成员类中有多个对象时,构造的顺序是先构造里面的对象,在构造外面的对象类中有多个对象时,析构时顺序是先析构外面的对象,在析构里面的对象。原创 2024-04-16 21:29:27 · 119 阅读 · 0 评论 -
构造函数和析构函数
一般需要人为提供,如果不提供,那么编译器也会给提供,只是编译器提供的构造和析构函数不会做任何操作,创建对象时和释放对象时,构造函数和析构函数自动会调用,不需要人为调用。如果自定义了一个构造函数,系统将不再提供默认的构造函数;如果创建对象时,不能调用对应的构造函数,将不能创建出对象。如果自定义了一个拷贝构造,系统将不再提供默认的拷贝构造。创建对象时,对对象进行初始化工作,就是构造函数。销毁对象时,对对象进行清理工作,就是析构函数。1.2 函数名:类名前面加上~1.2 函数名和类名一致。原创 2024-04-16 12:52:13 · 358 阅读 · 0 评论 -
C++立方体的类
C++立方体的类实现原创 2024-04-16 11:04:30 · 209 阅读 · 0 评论 -
C++中类和对象
1. c和c++中struct的区别1.1 c语言中结构体中不能存放函数,也就是数据(属性)和行为(方法)是分离1.2 c++中结构体中是可以存放函数的,也就是数据(属性)和行为(方法)是封装在一起的。原创 2024-04-15 23:02:33 · 493 阅读 · 0 评论 -
extern“C”浅析
c++编辑器编译.c的函数时,需要声明为 extern "C" main.cpp原创 2024-04-15 18:58:44 · 193 阅读 · 0 评论 -
函数的重载
在c++中函数的名字是刻印重名的,也就是可以有多个相同函数名的函数存在,重载:名字相同,意义不一样原创 2024-04-15 18:35:31 · 161 阅读 · 0 评论 -
函数的占位参数
占位参数给函数形参设置的,调用时需要传参,也可以设置占位参数为默认参数。原创 2024-04-15 18:19:51 · 81 阅读 · 0 评论 -
函数的默认参数
1.设置默认参数时,某个参数设置了默认参数,从这个参数开始,后面的每一个都要设置函2. 函数的声明和定义处设置默认参数只能一处设置。3. 有实参传入则使用实参,实参没有传入使用默认参数。原创 2024-04-15 18:12:25 · 193 阅读 · 0 评论 -
内联函数(inline function)
一. 为什么要有内联函数第一个在c中也会出现,宏看起来像一个函数调用,但是会有隐藏一些难以发现的错误。第二个问题是c++特有的,预处理器不允许访问类的成员,也就是说预处理器宏不能用作类类的成员函数。原创 2024-04-15 18:10:52 · 489 阅读 · 0 评论 -
C++引用
引用的使用原创 2024-04-15 17:07:14 · 216 阅读 · 0 评论 -
C++对比C的增强
C++与C的对比原创 2024-04-15 14:49:09 · 1001 阅读 · 5 评论 -
初始C++
C++学习笔记原创 2024-04-15 10:37:27 · 120 阅读 · 0 评论 -
结构体数组
结构体数组原创 2024-04-11 18:09:03 · 223 阅读 · 0 评论 -
C++结构体的定义和使用
C++结构体的定义和使用原创 2024-04-11 17:30:43 · 172 阅读 · 0 评论