![](https://img-blog.csdnimg.cn/direct/748dac9f4d614d5a8738872c81231f5d.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C/C++精进之路
文章平均质量分 95
简单的动作重复练!
看十遍不如做一遍,收藏一千次,不如自己写一遍发出来!
发狂的小花
公众号:极空AI
AR行业经验、算法部署优化、图像处理算法、slam、SGBM、相机标定、TOF
CPU、DSP、GPU、算子针对硬件优化
展开
-
C/C++面向对象(OOP)编程-回调函数详解(回调函数、C/C++异步回调、函数指针)
函数指针、函数指针类型,函数回调,异步回调、C语言异步回调、C++异步回调原创 2024-01-01 00:16:09 · 4078 阅读 · 8 评论 -
C++面向对象(OOP)编程-线程返回值
函数可以有返回值,那么线程作为一个handler是如何返回值的呢?在C语言中线程可以直接返回值,然后通过thread.join(返回值)来获取,但是C++不支持这样做,C++中是怎么返回线程的返回值的呢?本文将会比较详细的介绍C语言线程的返回值,以及几种C++线程替代返回值的方法。🎬:一个全栈工程师的升级之路!🎀CSDN主页🌄人生秘诀:学习的本质就是极致重复!原创 2023-12-28 10:59:12 · 923 阅读 · 0 评论 -
C++面向对象(OOP)编程-多线程详解
要理解多线程需要理解线程和进程的区别。应用由程序和数据组成,程序中包括多个或者一个进程,进程中包括多个或者一个线程。进程的范围大于线程。原创 2023-12-27 20:53:01 · 936 阅读 · 0 评论 -
C++面向对象(OOP)编程-C++11新特性详解
C++11作为一个重要的版本,引入了很多新的特性,解决了C++语言本身很多遗留的内存泄露问题,并且提供了很多比较灵活的用法。引入的auto,智能指针、线程机制都使得C++语言的灵活性、安全性、并发性有了很大的提升。本文会比较详细的介绍C++11引入的新特性,以及各自引入的原因和基本的用法。原创 2023-12-26 11:26:15 · 1326 阅读 · 0 评论 -
C++面向对象(OOP)编程-位运算详解
逻辑移位和算术移位的主要区别在于它们如何对待被移出的位。逻辑移位主要用于无符号数的操作,而算术移位则用于有符号数的操作,以保持数值的准确性。逻辑移位仅仅是移位不会考虑符号位,而算术移位会保留符号位的准确。// 负数的补码表示法: 除符号位其他位反码+1// -3的二进制原码: 10000000000000000000000000000011// -3的二进制反码: 11111111111111111111111111111100。原创 2023-12-22 18:28:09 · 1628 阅读 · 0 评论 -
C++面向对象(OOP)编程-四种类型转换
本文主要介绍C/C++的四中强制类型转换,包括static_cast、const_cast、dynamic_cast、reinterpret_cast。原创 2023-12-20 18:45:04 · 931 阅读 · 0 评论 -
C++面向对象(OOP)编程-STL详解(vector)
泛型编程是一种代码重用技术,尽可能的将代码写的抽象和通用,将算法从数据结构抽象出来,以便适配多种多样的数据结构,C++的模板编程就是一种泛型编程技术。原创 2023-12-20 14:55:23 · 1625 阅读 · 0 评论 -
C++面向对象(OOP)编程-引用(左引用、右引用、万能引用、完美转发)
左值 (lvalue, left value),顾名思义就是赋值符号左边的值。准确来说, 左值是表达式(不一定是赋值表达式)后依然存在的持久对象。右值 (rvalue, right value),右边的值,是指表达式结束后就不再存在的临时对象。纯右值、将亡值。纯右值 (prvalue, pure rvalue),纯粹的右值,要么是纯粹的字面量,例如 10, true;要么是求值结果相当于字面量或匿名临时对象,例如 1+2。原创 2023-12-20 00:36:28 · 770 阅读 · 0 评论 -
C++面向对象(OOP)编程-智能指针
智能指针是C++11引入的类模板,用于管理资源,行为类似于指针,但不需要手动申请、释放资源,所以称为智能指针。所以智能指针的本质是类模板。原创 2023-12-19 16:52:59 · 842 阅读 · 0 评论 -
C++面向对象(OOP)编程-类与结构体的区别
class和struct的语法基本相同,从声明到使用,都很相似,但是struct的约束要比class多,理论上,struct能做到的class都能做到,但class能做到的stuct却不一定做的到struct是值类型,class是引用类型,因此它们具有所有值类型和引用类型之间的差异由于堆栈的执行效率要比堆的执行效率高,但是堆栈资源却很有限,不适合处理逻辑复杂的大对象,因此struct常用来处理作为基类型对待的小对象,而class来处理某个商业逻辑。原创 2023-12-19 13:50:12 · 1013 阅读 · 0 评论 -
C++面向对象(OOP)编程-异常机制
异常是指在程序运行过程中,由于系统条件、操作不当等原因而引起的运行错误。除零错误、指针访问受保护空间、数据越界、分配空间失败、要打开的文件不存在等。C++异常处理使用关键字trycatch和throw来实现。try块:用于包含可能会抛出异常的代码。当异常被抛出时,程序会立即停止执行try块中的剩余代码,并将控制权转移到与该异常匹配的catch块。catch块:用于捕获并处理异常。每个catch块都指定了要捕获的异常类型。当异常与某个catch块匹配时,程序将执行该块中的代码来处理异常。throw。原创 2023-12-19 00:19:02 · 834 阅读 · 0 评论 -
C++面向对象(OOP)编程-模板
template //模板头(模板说明)返回值类型 函数名(参数列表) //函数定义函数体;(1) template是声明模板的关键字,告诉编译器开始泛型编程。(2)尖括号中的typename是定义形参的关键字,用来说明其后的形参名为类型 参数,(模板形参)。Typename(建议用)可以用class关键字代替,两者没有区别。原创 2023-12-18 20:44:38 · 879 阅读 · 0 评论 -
C++面向对象(OOP)编程-浅拷贝与深拷贝
浅拷贝(Shallow Copy)和深拷贝(Deep Copy)是在对象复制过程中的两种不同方式:1 在未定义拷贝构造函数的情况下,系统会调用默认的拷贝函数——即浅拷贝(不用自己构造),它能够完成成员的简单的值的拷贝一一复制。当数据成员中没有指针时,浅拷贝是可行的;原创 2023-12-16 13:31:44 · 982 阅读 · 0 评论 -
C++面向对象(OOP)编程-运算符重载
本文主要介绍C++面向对象编程中的多态的手段之一运算符重载,讲清运算符重载的本质,以及通过代码实现一些常用的运算符重载。原创 2023-12-15 21:45:29 · 1051 阅读 · 0 评论 -
C++面向对象(OOP)编程-I/O操作(输入输出)
std::fstream`是C++标准库中的一个类,用于文件的输入/输出操作。指数据传外设(一般是显示器)传入内存,或者从硬盘读取到内存,称为输入流,输入操作就是将外设数据或者硬盘数据转换成输入流,输入流在内存中存储。指数据从内存输出到外设(一般是显示器),或者输出保存到文件存储在硬盘中,此时的数据称为输出流,输出流在内存中,将输出流输出到外设或者硬盘的操作叫输出操作。接着,我们检查文件是否成功打开,如果成功打开,就向文件中写入一行文本。是C++标准库中的一个头文件,它包含了用于输入输出操作的类和函数。原创 2023-12-14 11:50:31 · 1198 阅读 · 0 评论 -
C++面向对象(OOP)编程-友元(友元函数和友元类)
本文主要介绍面向对象编程的友元的使用,以及友元的特性和分类,提供C++代码。原创 2023-12-13 19:46:35 · 1118 阅读 · 0 评论 -
堆与栈的效率的比较
a. 存储方式:堆是从低地址向高地址增长的,栈是从高地址到低地址增长的b. 存储结构:堆是动态存储、链式存储;栈是有序存储、顺序存储;数据结构最本质的存储方式只有顺序存储和链式存储。c. 数据操作原则:堆是先进先出(FIFO),栈是后进先出(LIFO)d. 内存管理:堆由OS管理,栈由程序员手动管理e. 生存周期:堆在程序员手动释放时结束,栈函数调用完成后结束,一般而言,堆的生存周期比较长f. 数据存储效率、大小、信息:堆主要存储动态生命周期的对象和数据结构,空间可以很大,效率较低;原创 2023-11-28 19:28:50 · 1080 阅读 · 0 评论 -
从汇编代码直观看i++和++i的区别
i++和++i是C语言入门最基础的一个知识,以前学的时候,仅仅是记住,i++是先赋值再加1,++i是先相加后赋值。前段时间在一个循环buffer的读写指针访问时,不小心使用了i++导致,程序一直报段错误,由此我试着从更底层的角度来理解下i++和++i。原创 2023-11-02 13:11:38 · 181 阅读 · 0 评论 -
C++面向对象(OOP)编程-详解vector的扩容
vector是C++ STL中的一个动态数组容器,相比于静态数组,vector的优势是可以动态改变其大小。C++使用时仅仅包含其头文件即可使用。vector 是一个类模板,本质上是一个动态变长数组即顺序表,元素的类型是任意的内置或者自定义的类型,存储在连续的存储空间,访问的时间复杂度为O(1),对于尾部元素的插入和删除时间复杂度都是常量级别的。原创 2023-10-20 12:06:26 · 170 阅读 · 0 评论