c++智能指针--unique_ptr 众所周知,c语言与c++需要自行管理动态的内存。许多代码写到最后,防止内存泄漏需要花费程序员大量的心力。在c++11标准中,提出了智能指针来帮助程序员管理动态内存(如果使用智能指针来管理栈上的内存,则在最后析构阶段释放内存时会出现错误)。智能指针主要有三种,分别是shared_ptr、unique_ptr与weak_ptr。本文主要讲的就是unique_ptr使用中的问题。 unique_ptr 2018-10-20 #c与c++
c++中const与constexpr关键字 本文主要讨论const变量与constexpr变量的初始化时刻与constexpr函数的编译期计算问题。转载 const变量的初始化时刻 const修饰变量,表示这个变量是不可修改的,因此const变量必须初始化,一经初始化就不可修改。 1. 如果const变量的初始化值是在编译时就可以确定,则在编译时初始化; 如果const变量的初始化值是在运行时才确定,则在运行时初始化; 1const i 2018-10-20 #c与c++
c++智能指针--shared_ptr 众所周知,c语言与c++需要自行管理动态的内存。许多代码写到最后,防止内存泄漏需要花费程序员大量的心力。在c++11标准中,提出了智能指针来帮助程序员管理动态内存。智能指针主要有三种,分别是shared_ptr、unique_ptr与weak_ptr。本文主要讲的就是shared_ptr使用中的问题。 shared_ptr 首先需要说明的是,shared_ptr是一个模板类。为了让用户可以像使用内 2018-10-18 #c与c++
c++中类的拷贝控制操作 通常一个类的拷贝控制操作由以下三个函数来定义: 1. 拷贝构造函数 拷贝赋值运算符 析构函数 以上这3个成员,如果在一个类中未自己定义时,编译器会为这个类自动生成默认的版本。三个成员共同构成了一个类基本的的拷贝控制与资源管理操作。 =default 与 =delete 的使用 我们可以通过将拷贝控制成员定义为=default来显式地要求编译器生成合成版本的。 在c++11标准以后我们可以通过将 2018-10-16 #c与c++
opencv中的Mat类讲解 Mat类 很久以前(大概两千年左右),opencv还只是提供c接口的一个库。那时它使用一种c语言的结构体叫做IplImage来存储图像。后来实在是受不了了,因为使用c语言接口的用户需要自己来管理内存,实在特别麻烦并且容易出错。opencv维护者们就使用c++又翻新了一遍opencv库。新版本中(2.0往后)支持使用Mat来存储图像。 Mat的组成 Mat主要由两部分组成: 1. 矩阵头信息:主要是 2018-10-10 #计算机视觉 #opencv
c++中的引用 在c++中,为了改变c语言中指针使用的种种麻烦与困难,定义了一种新的复合类型---引用,引用也分为很多种,比如左值引用、右值引用、常量引用等等。 左值引用 一般情况下,大家见的最多的就是左值引用。右值引用通常与移动操作结合起来的比较多。其中左值引用使用&符号,右值引用使用&&。 下面是左值引用的两个大类。 ## 普通引用 引用为对象起了另外一个名字,引用类型引用(refer 2018-10-09 #c与c++
哈佛体系结构与冯诺依曼体系结构的区别 MCS-51单片机有着嵌入式处理器经典的体系结构,这种体系结构在当前嵌入式处理器的高端ARM系列上仍然在延续,这就是哈佛结构。相对于大名鼎鼎的冯·诺依曼结构,哈佛结构的知名度显然逊色许多,但在嵌入式应用领域,哈佛结构却拥有着绝对的优势。哈佛结构与冯·诺依曼结构的最大区别在于冯·诺依曼结构的计算机采用代码与数据的统一编址,而哈佛结构是独立编址的,代码空间与数据空间完全分开。 在通用计算机系统中,应用 2018-10-03 #计算机基础
命令行调试工具gdb小结 一个合格的程序猿,肯定熟练掌握一种或者几种编程语言。而要想熟练掌握c与c++语言,gdb这个工具是一定得了解的。额,不过我写它主要是给自己一个快速查看的链接,等到我把这些背下来就没什么价值了。这里只会写最常用最简单的功能,如果想要了解更多,可以查看gdb技术手册。 gdb GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。gdb的功能及其强 2018-10-01 #tools
图像特征之ORB特征详解 学术需要,最近开始着手一些视觉slam的工作,首先接触了如今github上最火的开源valsm的项目--ORB-Slam,这是一种基于特征点匹配的方法。其实以前我就已经接触过一些图像特征了,比如说SURF、SIFT等经典的特征点,记得当时还依据SURF特征写过一个图像拼接的MATLAB大作业。但是说实话,当时对于图像特征这个概念我的理解是非常浅显的。这次进行视觉SLAM的学习,首先就从ORB特征点 2018-09-16 #计算机视觉
c语言和c++语言中的几个常识问题 在我刚上大学那会儿,学了c语言与cpp。当时肯定是没学好哈哈,记得我好长一段时间都认为c++语言就是c语言多了面向对象的部分(这个有可能是因为谭浩强的两本书实在太像了)。这段时间一直在总结c语言和cpp语言学习,cpp语言确实脱胎于c语言,但是有些地方确实还是会有细微的差别的。已经写了几篇博客了,今天这应该是最后一篇,讲的是一些c语言和cpp的几个常识问题.比如关键字struct与关键字class 2018-09-15 #c与c++