![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 58
wwwwxhh
这个作者很懒,什么都没留下…
展开
-
DirectShow禁用ActiveMovie窗口
DirectShow一般有一个IVideoWindow类型的windows用来预览画面,删除IVideoWindow后会出现ActiveMovie窗口,如果想用自己的窗口显示回调的摄像头数据,ActiveMovie无法关闭很碍事// IVideoWindow,用来显示预览视频 hr = pGraphBuilder->QueryInterface(IID_IVideoWindow, (LPVOID *)&pVideoWindow); if (FAILED(hr)) ...原创 2020-09-09 11:25:00 · 1038 阅读 · 0 评论 -
内存对齐
结构体数据对齐 结构体数据对齐,是指结构体内的各个数据对齐。在结构体中的第一个成员的首地址等于整个结构体的变量的首地址,而后的成员的地址随着它声明的顺序和实际占用的字节数递增。为了总的结构体大小对齐,会在结构体中插入一些没有实际意思的字符来填充(padding)结构体。 在结构体中,成员数据对齐满足以下规则: 1、结构体中的第一个成员的首地址也原创 2016-05-05 11:37:13 · 404 阅读 · 0 评论 -
更简单的非递归遍历二叉树的方法
解决二叉树的很多问题的方案都是基于对二叉树的遍历。遍历二叉树的前序,中序,后序三大方法算是计算机科班学生必写代码了。其递归遍历是人人都能信手拈来,可是在手生时写出非递归遍历恐非易事。正因为并非易事,所以网上出现无数的介绍二叉树非递归遍历方法的文章。可是大家需要的真是那些非递归遍历代码和讲述吗?代码早在学数据结构时就看懂了,理解了,可为什么我们一而再再而三地忘记非递归遍历方法,却始终记住了递归遍历方转载 2016-05-05 17:57:33 · 384 阅读 · 0 评论 -
vector和map迭代中erase的使用陷阱
vector和map都不能将it++写在for循环中,而在循环体内erase(it).可以把it++卸载for循环中进行遍历操作,但erase操作后it发生了变化,如果for循环执行了++操作,会发生错误。vector循环删除的时候,erase(it)会返回下一个迭代器的地址,保险的做法是赋值给it 即 it= erase(it),这时候for循环的++操作就会跳到删除原创 2016-04-29 12:25:49 · 838 阅读 · 0 评论 -
二进制如何转十进制,十进制如何转二进制
转载自:http://jingyan.baidu.com/article/597a0643614568312b5243c0.html转载 2016-04-28 10:40:14 · 405 阅读 · 0 评论 -
使用std::unique_ptr替换 函数域内普通指针
我需要一个地址char*作为参数,可能还用到了strncpy,在结束的时候deletechar *desip = new char[LENGTH];strncpy(desip , srcIp, LENGTH);........delete ip;不安全的地方在于new可能失败,delete可能被忘记。使用智能指针代替:std::unique_ptr de原创 2016-09-14 18:20:33 · 3743 阅读 · 1 评论 -
std::lock_guard and std::unique_lock
Difference between std::lock_guard and std::unique_lock转载 2016-10-19 11:24:38 · 570 阅读 · 0 评论 -
unique_ptr and shared_ptr
Both of these classes are smart pointers, which means that they automatically (in most cases) will deallocate the object that they point at when that object can no longer be referenced. The difference转载 2016-10-19 11:36:25 · 389 阅读 · 0 评论 -
windows注册表设置程序开机自启动-QT
windows写注册表设置程序自启动的方式是一致的:在注册表"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run"位置添加键值对,程序名做key,值为exe程序完整路径,下面以QT获取程序名和路径,写入注册码为例:#define REG_RUN "HKEY_CURRENT_USER\\Software\...原创 2019-05-07 10:43:51 · 1079 阅读 · 0 评论 -
重载、覆盖和隐藏区别?
类成员函数的重载、覆盖和隐藏区别?答案:a.成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。b.覆盖是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)参数相同;(4)基类函数必须有virtual 关键字。 c.“隐藏”是原创 2016-05-13 16:09:27 · 394 阅读 · 0 评论 -
delete和delete[]陷阱
c++中对new申请的内存的释放方式有delete和delete[]两种方式,到底这两者有什么区别呢? delete ptr 代表用来释放内存,且只用来释放ptr指向的内存。 delete[] rg 用来释放rg指向的内存,!!还逐一调用数组中每个对象的destructor!!(1) 对于基本数据类型;delete和delete[]作用相同,原因在原创 2016-04-29 12:32:16 · 566 阅读 · 0 评论 -
变量命名规则
在软件开发过程中,代码的命名规范是一项很突出的内容。一套定义完整、结构清晰明了的命名规范将大大提升源代码的可读性和软件的可维护性。据考证,没有一种命名规则可以让所有的程序员都满意,程序设计教科书一般也不会指定命名规则。但是制定一套令开发组成员基本满意的命名规则,并在项目中贯彻实施,也是团队开发一项必不可少的工作。我将我的团队的实际工作中的命名规则整理如下: 第一部分:共性规则共转载 2013-08-14 14:24:14 · 708 阅读 · 0 评论 -
Cannot open precompiled header file: 'Debug/*.pch': No such file or directory
给予解决问题的可直接跳至第四段,解决办法。很多新手开发人员再使用VC或者VS编程的时候会碰到如题所述的问题,往往会盲目的进行工程设置或者Rebuild。无奈的时候可能会取消使用预编译头文件,换来的结果就是漫长的编译等待。预编译头文件:预编译头文件在vs下的工程属性设置如下图所示,制定了是否使用预编译、预编译头文件、预编译文件的输出路径。Procomplied Hea原创 2014-12-02 10:30:46 · 1734 阅读 · 0 评论 -
基于Firebreath的浏览器插件制作
1. 应用场景 在web端需要通过远程桌面服务调用特定服务器上的应用程序,使用户在桌面点击应用程序的图标之后就可以自动启动对应的服务器上的软件使用,为了达到这种功能,要预先生成rdp文件,然后通过mstsc命令或者其它自己开发的应用程序来调用该rdp文件就可以启动远程应用程序。项目中采用的是自己开发的应用程序来调用该rdp文件,采用到JavaScript调用插件中的函数来实现这一功能转载 2016-04-13 12:15:48 · 477 阅读 · 0 评论 -
C++类中的static数据成员,static成员函数
C++类中谈到static,我们可以在类中定义static成员,static成员函数!C++primer里面讲过:static成员它不像普通的数据成员,static数据成员独立于该类的任意对象而存在,每个static数据成员是与类关联的对象,并不与该类的对象相关联!这句话可能比较拗口,其实可以这么理解:每个static数据成员可以看成是类的一个对象,而不与该类定义的对象有任何关系!下面我们就来具体转载 2016-04-13 12:19:44 · 336 阅读 · 0 评论 -
详解虚函数表virtual table
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过转载 2016-03-28 10:42:55 · 723 阅读 · 0 评论 -
C,C++中使用可变参数
可变参数即表示参数个数可以变化,可多可少,也表示参数的类型也可以变化,可以是int,double还可以是char*,类,结构体等等。可变参数是实现printf(),sprintf()等函数的关键之处,也可以用可变参数来对任意数量的数据进行求和,求平均值带来方便(不然就用数组或每种写个重载)。在C#中有专门的关键字parame,但在C,C++并没有类似的语法,不过幸好提供这方面的处理函数,本文将重点转载 2016-04-14 11:12:57 · 337 阅读 · 0 评论 -
C++的4种类型转换关键字及其特点
C语言中的强制类型转换可以随意的转换我们想要的类型了,格式如下(类型) 变量名; 为什么c++还要引入新的4种类型转换呢? 这是因为新的类型转换控制符可以很好的控制类型转换的过程,允许控制各种类型不同的转换. 还有一点好处是C++的类型转换控制符能告诉程序员或读者我们这个转换的目的是什么,我们 只要看一下代码的类型转换控制符,就能明白我们想要达到什么样的目的转载 2016-04-15 11:03:50 · 691 阅读 · 0 评论 -
以一道union面试题说明大端小端和内存高位低位
首先我们来看一道题:union number{int value;char str[2];};number test;test.value = 0;test.str[0] = 10;test.str[1] = 1;printf("%d", test.value);请问输出是多少?一步步来求解,union是共享内存的,所以当前test占用4个字节。1:原创 2016-04-28 18:08:51 · 2423 阅读 · 0 评论 -
函数名与函数指针
转自:whyhappy: http://www.programfan.com/blog/article.asp?id=6030函数名与函数指针一 通常的函数调用 一个通常的函数调用的例子://自行包含头文件void MyFun(int x); //此处的申明也可写成:void MyFun( int );int main(int argc, char* a转载 2014-04-21 15:00:50 · 331 阅读 · 0 评论