C/C++
文章平均质量分 61
惊雲浅谈天
这个作者很懒,什么都没留下…
展开
-
C++11 Lambda表达式
实际在底层编译器对于lambda表达式的处理方式,就是按照函数对象的方式处理的,即:如果定义了一个lambda表达式,编译器会自动生成一个类,在该类中重载了operator()。函数对象将rate作为其成员变量,在定义对象时给出初始值即可,lambda表达式通过捕获列表可以直接将该变量捕获到。函数对象,又称为仿函数,即可以想函数一样使用的对象,就是在类中重载了operator()运算符的类对象。原创 2023-08-23 00:25:56 · 89 阅读 · 0 评论 -
类型转换操作符
普通的类型转换方式只适用于基本数据类型,对复杂的自定义类型不适用。因此,C++中提供了四种类型转换符:static_cast、dynamic_cast、const_cast、reinterpret_cast。原创 2023-08-22 23:48:35 · 66 阅读 · 0 评论 -
C++11 智能指针
智能指针本质上一个类模板,它可以创建任意的类型的指针对象,当智能指针对象使用完后,对象就会自动调用析构函数去释放该指针所指向的空间。所有的智能指针类模板中都包含一个私有的指针对象,以及构造函数和析构函数。原创 2023-08-22 22:40:20 · 68 阅读 · 1 评论 -
内联函数——inline
inline 关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义。首先,C语言是一个效率很高的语言,宏定义在形式及使用上像一个函数,但它使用预处理器实现,没有了参数压栈、代码生成等一系列的操作,因此效率很高,这是它在C中被使用的一个主要原因。原创 2023-08-19 00:16:39 · 97 阅读 · 0 评论 -
C++11移动语义
以移动而非深拷贝的方式初始化含有指针成员的类对象。移动语义指的就是将其他对象(通常是临时对象)拥有的内存资源“移为已用”。在旧版的拷贝构造函数的实现中,当类中拥有指针类型的成员变量时,拷贝构造函数中需要以深拷贝的方式复制该指针成员。(否则一旦多个对象中的指针成员指向同一块堆空间,这些对象析构时就会对该空间释放多次,这是不允许的)如果临时对象中的指针成员申请了大量的堆空间,那么深拷贝操作势必会影响对象初始化的执行效率。原创 2023-08-15 13:24:55 · 173 阅读 · 1 评论 -
静态链接和动态链接
编译过程分三步:预编译、编译、汇编,编译之后链接生成可执行文件。链接包括两种方式:静态链接和动态链接。原创 2023-07-30 22:47:18 · 77 阅读 · 1 评论 -
模板——template
函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现了不同函数的功能。原创 2023-07-30 22:12:28 · 48 阅读 · 1 评论 -
虚函数及其实现原理
使用virtual关键字修饰的函数被称为虚函数,虚函数是实现多态的关键之一。同一个行为具有多个不同表现形式或形态的能力。C++的多态性具体体现在运行和编译两个方面:在程序运行时的多态性通过继承和虚函数来体现。在程序编译时多态性体现在函数和运算符的重载上。在同一个类的成员函数的调用中,虚函数与普通成员函数没有区别。在继承关系中,子类可以通过覆盖基类的虚函数,实现多态。虚函数可以被两种常见的关键字修饰:override:检查派生类虚函数是否重写了基类某个虚函数,如果没有重写编译报错。原创 2023-07-30 21:51:50 · 183 阅读 · 1 评论 -
位图的原理及实现
位图适用于大数据的存储,用unsigned int(32位)的每一位映射一个数据,以此可以将数据量缩小为原来的1/32。bitTable为位图的集合。index检索到是哪一个位图(32位二进制数),num锁定位图上的某一位。原创 2023-07-26 22:39:27 · 81 阅读 · 1 评论 -
栈与堆的区别
栈和堆的区别大体上分为以下几点:申请方式、申请后系统的响应、申请大小的限制、申请效率、存储内容原创 2023-07-26 12:21:07 · 54 阅读 · 1 评论 -
数据内存地址判断
3、全局区(静态区)(static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。2、堆区(heap):一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。1、栈区(stack):由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。4、文字常量区:常量字符串就是放在这里的。5、程序代码区:存放函数体的二进制代码。原创 2023-07-26 11:56:53 · 170 阅读 · 1 评论