
C++
昕动乐活
水滴石穿
展开
-
将PCD文件转换为sensor_msgs::PointCloud2,并发布话题
关键代码:ros::Publisher cloud_pub=nh.advertise("lidar_cloud",1);pcl::PointCloud cloud;sensor_msgs::PointCloud2 output;pcl::io::loadPCDFile("/home/a/pcd/1.pcd",cloud);pcl::toROSMsg(cloud,output);ros::Rate loop_rate(10);while(ros::ok()) { clo..原创 2021-01-15 17:18:00 · 968 阅读 · 0 评论 -
为什么析构函数必须是虚函数?为什么C++默认的析构函数不是虚函数
将可能会被继承的父类的析构函数设置为虚函数,可以保证当我们new一个子类,然后使用基类指针指向该子类对象,释放基类指针时可以释放掉子类的空间,防止内存泄漏。C++默认的***析构函数不是虚函数是因为虚函数需要额外的虚函数表和虚表指针,占用额外的内存***。而对于不会被继承的类来说,其析构函数如果是虚函数,就会浪费内存。因此C++默认的析构函数不是虚函数,而是只有当需要当作父类时,设置为虚函数。C++中析构函数的作用析构函数与构造函数对应,当对象结束其生命周期,如对象所在的函数已调用完毕时,系统会自转载 2020-05-30 09:09:48 · 1750 阅读 · 0 评论 -
C++易混知识点5:实例讲解Public Protected Private作用域,继承的区别和用意
转自:https://www.cnblogs.com/xiongyunqi/p/4389501.html大学生涯,涉及到类的作用域,继承都是用的public 共有继承,当时也没想那么多,觉得共有继承多方便,多简单,反正没有太多的限制,不管是类的成员或者是基类的成员函数都可以访问。没有深究。其实这里面真是涉及到了C++面向对象设计当中的封装特性。只暴露那些需要的成员和成员函数,不必过多曝露所有的...转载 2020-03-30 10:22:53 · 339 阅读 · 0 评论 -
c++ 中.、->、::和:
转自:https://www.jianshu.com/p/0b7d67d396071、A.B 则 A 为对象或者结构体;2、A->B 则A 为指针,-> 是成员提取,A->B 是提取 A 中的成员 B,A 只能是指向类、结构、联合的指针;3、:: 是作用域运算符,A::B 表示作用域 A 中的名称 B,A 可以是名字空间、类、结构;4、:一般用来表示继承;...转载 2020-01-08 10:36:20 · 315 阅读 · 0 评论 -
静态成员函数和普通成员函数的区别
之前一直不太明白静态成员函数的用意,这篇文章讲的很具体https://blog.youkuaiyun.com/qq_37375427/article/details/78808900转载 2019-12-11 12:14:12 · 277 阅读 · 0 评论 -
C++ explicit关键字详解
转自:https://www.cnblogs.com/ymy124/p/3632634.html首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).那么显示声明的构造函数和隐式声明的有什么区别转载 2017-12-08 13:32:57 · 164 阅读 · 0 评论 -
MFC C++ Cstring与string互转
转自:https://www.cnblogs.com/HappyEDay/p/7016162.htmlCString 转换成string我试了很多的方法,都不行,我用的vs2010------解决方案--------------------unicode:CString sz1 = L"abc";std::string sz2 = CT2A(sz1.GetBuffe转载 2018-01-26 15:53:59 · 281 阅读 · 0 评论 -
mfc获取控件在对话框上的位置
转自:https://www.cnblogs.com/huhu0013/p/3944569.htmlCRect rect;GetDlgItem(控件ID)->GetWindowRect(&rect);//获取控件的屏幕坐标ScreenToClient(&rect);//转换为对话框上的客户坐标...转载 2018-02-26 17:06:46 · 733 阅读 · 0 评论 -
STL中map的遍历
转自:http://www.cnblogs.com/kaitoex/p/6081980.htmlmap作为STL中的映射容器非常好用,我们来说一下map的遍历。map.first为key值,map.second为value值,key不可修改,value可修改。定义一个迭代指针iter,使其指向map,实现对map的遍历。 1 #include <iostream> 2 #includ...转载 2018-05-02 15:40:23 · 1942 阅读 · 0 评论 -
C++ 深入理解虚函数
转自:https://www.cnblogs.com/jin521/p/5602190.html为什么使用虚函数?什么是虚函数?虚函数是为了解决什么问题?面向对象的三大特征:封装 多态 继承普通虚函数 虚析构函数 纯虚函数 抽象类 接口类 隐藏 vs 覆盖 隐藏与覆盖之间的关系 早绑定和晚绑定 虚函数表什么是多态?相同对象收到不同消息或不同对象收到相同消息时...转载 2018-07-19 13:57:14 · 185 阅读 · 0 评论 -
C++ ofstream和ifstream详细用法
转自:http://soft.chinabyte.com/database/460/11433960.sh [导读] ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间 在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O. stream这个类有两个重要的...转载 2018-10-16 14:20:42 · 201 阅读 · 0 评论 -
程序分配堆栈全局区
转自:https://www.cnblogs.com/snowwhite/p/4726749.html一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是...转载 2019-06-21 15:36:00 · 204 阅读 · 0 评论 -
使用StretchBlt之前一定要用SetStretchBltMode(COLORONCOLOR)
转自:http://www.360doc.com/content/13/0507/09/10724725_283551806.shtml近日要实现将缩小的位图保存在后台,以便在OnPaint刷新的时候仍然可以看到正确的图像,遂在lg_Bitmap类中添加了这样一个函数 BOOL lg_Bitmap::LoadFromHDC(HDC hDC) {转载 2017-11-06 11:25:02 · 4128 阅读 · 0 评论 -
MFC函数之BitBlt
转自:http://blog.youkuaiyun.com/h1023417614/article/details/43086533// Cgame123View 绘制 void Cgame123View::OnDraw(CDC* pDC) { Cgame123Doc* pDoc = GetDocument(); ASSERT_VALID(pDo转载 2017-11-06 11:12:08 · 578 阅读 · 0 评论 -
GetWindowRect和GetClientRect的区别详解
转自:http://www.cnblogs.com/wb-DarkHorse/archive/2013/07/08/3178201.html一:关于坐标 MFC中绘图时经常涉及到坐标计算,GetWindowRect和GetClientRect这两个函数,是获取逻辑坐标系中窗口或控件(其实也是窗口)大小和坐标的常用函数了,有什么不一样的?先说说什么叫逻辑坐标?讲到逻辑坐标,转载 2017-11-06 10:21:59 · 166 阅读 · 0 评论 -
C++ Virtual详解
转载地址:http://www.cnblogs.com/xd502djj/archive/2010/09/22/1832912.htmlVirtual是C++ OO机制中很重要的一个关键字。只要是学过C++的人都知道在类Base中加了Virtual关键字的函数就是虚拟函数(例如函数print),于是在Base的派生类Derived中就可以通过重写虚拟函数来实现对基类虚拟函数的覆转载 2017-08-21 17:01:03 · 187 阅读 · 0 评论 -
C++命名空间 namespace的作用和使用解析
转自:http://blog.sina.com.cn/s/blog_af68a2c201015pqo.html一、 为什么需要命名空间(问题提出)命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中 常见的同名冲突。在 C语言中定义了3个层次的作用域,即文件(编译单元)、函数和复合语句。C++又引入了类作用域,类是出现在文件内的。在不同的作用域中可以定义相同名转载 2017-08-23 11:04:04 · 238 阅读 · 0 评论 -
C++类接口和头文件概述
转自:http://blog.youkuaiyun.com/sky04/article/details/6186481主要参考Effective C++对于类中函数接口的描述· 纯虚函数意味着仅仅继承函数的接口。如果类C声明了一个纯虚函数mf,C的子类必须继承mf的接口,C的具体子类必须为之提供它们自己的实现。· 简单(一般普通的)虚函数意味着继承函数的接口加上一个缺省实现。如转载 2017-10-18 09:44:19 · 666 阅读 · 0 评论 -
C++中的inline用法
转自:http://www.cnblogs.com/fnlingnzb-learner/p/6423917.html1. 引入inline关键字的原因在c/c++中,为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,特别的引入了inline修饰符,表示为内联函数。栈空间就是指放置程序的局部数据(也就是函数内数据)的内存空间。在系统下,栈空间是有限的,假转载 2017-09-30 11:40:42 · 188 阅读 · 0 评论 -
c++类定义和类实现
转自:http://www.cnblogs.com/kkshaq/p/4660073.html预备知识:c++中我们cpp文件和.h文件的区别是,cpp文件是需要编译的文件,成为一个独立的编译单元,而h文件从来是不需要编译,只是用于预处理。 通常我们在cpp文件中,完成函数的实现,然后在h中则是对于函数的声明,由于默认情况下,全局变量和全局函数存储类型都是ext转载 2017-10-18 14:38:11 · 1005 阅读 · 0 评论 -
lib 和 dll 的区别、生成以及使用详解
转自:http://www.cnblogs.com/panweishadow/p/3632873.html 共有两种库:一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。一种是LIB包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库static lin转载 2017-10-18 17:04:44 · 331 阅读 · 0 评论 -
std::numeric_limits<unsigned int>::max()编译错误
转自:http://blog.chinaunix.net/uid-17102734-id-2830143.html今天使用了一下STL中的z数值极限竟然编译不过,std::numeric_limits::max()出现如下错误: warning C4003: “max”宏的实参不足 error C2589: “转载 2017-10-12 17:15:33 · 2072 阅读 · 1 评论 -
C++ limits头文件的用法(numeric_limits)
转自:http://blog.163.com/wujiaxing009@126/blog/static/7198839920124135147911/初学C++的时候,对这个模板很陌生,不知道它到底是做什么用的,今天拿起《C++标准程序库》,出现了它的讨论,所以决定好好研究一番。1. numeric_limits是什么?(A)《C++标准程序库》:转载 2017-10-13 11:14:02 · 371 阅读 · 0 评论 -
在WTL中利用滚动窗口类CScrollWindowImpl显示BMP图片
转自:http://blog.youkuaiyun.com/zhoujielunzhimi/article/details/7963421之前我也写了一篇用滚动窗口类显示图片的博客:http://blog.youkuaiyun.com/zhoujielunzhimi/article/details/7899735本文与之不同,上面的这个滚动窗口具有通用性,比如滚动窗口可以装载控件,但是比较繁琐转载 2017-10-31 12:42:06 · 453 阅读 · 1 评论 -
C++std命名空间详解
转自:http://qiusuoge.com/9811.html 1. 什么是命名空间在编程语言中,命名空间是一种特殊的作用域,它包含了处于该作用域中的所有标示符,而且其本身也是由标示符表示的。命名空间的使用目的是为了将逻辑相关的标示符限定在一起,组成相应的命名空间,可使整个系统更加模块化,最重要的是它可以防止命名冲突。就好比在两个函数或类中定义相同名字的对象一样,利转载 2017-10-17 12:14:30 · 838 阅读 · 0 评论 -
c++中冒号(:)和双冒号(::)的用法
转载于:http://fengqing888.blog.163.com/blog/static/3301141620100623933512/1.冒号(:)用法(1)表示机构内位域的定义(即该变量占几个bit空间)typedef struct _XXX{unsigned char a:4;unsigned char c;} ; XXX(2)构转载 2017-10-26 10:24:07 · 201 阅读 · 0 评论 -
C++ 类成员函数后面加 const关键字
转自:http://blog.youkuaiyun.com/cnhk1225/article/details/49121183这是用在类成员函数的声明和定义中, 例如在 .h中 void fun()const;在.cpp中 void Class::fun() const { .... }作用:表示该函数可以被常量对象调用转载 2017-10-26 10:45:45 · 376 阅读 · 0 评论 -
StretchDIBits用法
转自:http://blog.youkuaiyun.com/giantchen547792075/article/details/6996011StretchDIBits 函数把DIB、JPEG、PNG图像中一矩形区域内的像素颜色数据复制到指定的目标矩形里。如果目标矩形大于源矩形,此函数将拉伸的行和列以适合目标矩形的颜色数据。如果目标矩形小于源矩形,则此函数使用指定的光栅操作压缩的行和列。(Note:转载 2017-11-03 16:22:37 · 763 阅读 · 0 评论 -
LINK : fatal error LNK1104: 无法打开文件“opencv_calib3d249d.lib”问题解决
转自:http://blog.youkuaiyun.com/gaohuazhao/article/details/51660347LINK : fatal error LNK1104: 无法打开文件“opencv_calib3d249d.lib”报错的意思是在 XXX:\opencv\build\x86\vc11\lib中 找不到opencv_calib3d249d.lib转载 2017-11-13 17:31:58 · 1302 阅读 · 1 评论 -
C++虚基类
原文地址:http://blog.youkuaiyun.com/leonard_wang/article/details/8159583教科书上面对C++虚基类的描述玄而又玄,名曰“共享继承”,名曰“各派生类的对象共享基类的的一个拷贝”,其实说白了就是解决多重多级继承造成的二义性问题。例如有基类B,从B派生出C和D,然后类F又同时继承了C和D,现在类F的一个对象里面包含了两个基类B的对象,如果F访问自转载 2017-08-21 16:57:34 · 162 阅读 · 0 评论