07 2018 档案

摘要:转载自:http://blog.csdn.NET/xubin341719/article/details/7091583/ 最近不是太忙,整理些东西,工作也许用得到。 1,为什么要用到链表 数组作为存放同类数据的集合,给我们在程序设计时带来很多的方便,增加了灵活性。但数组也同样存在一些弊病。如数组的 阅读全文
posted @ 2018-07-31 16:04 ye_ming 阅读(904) 评论(0) 推荐(0)
摘要:单链表的结构有多种 这里介绍的链表有头结点、有尾节点并且尾节点指向头结点 单链表的每个结点的地址存放在其直接前驱结点的指针域中。其中第一个结点没有前驱结点,因此需要一个头指针指向第一个节点,便于我们对整个链表进行操作;这里的单链表的最后一个节点的指针域存放的是头结点的地址。 单链表不能随意存取,必要 阅读全文
posted @ 2018-07-28 18:15 ye_ming 阅读(351) 评论(0) 推荐(0)
摘要:可以看到i是拷贝值,j是引用值,所以是24,结果26 把lambda表达式当作参数传送 把lambda表达式当作参数传送 lambda表达式嵌套使用 lambda表达式嵌套使用 ambda表达式使用在高阶函数里 ambda表达式使用在高阶函数里 阅读全文
posted @ 2018-07-22 18:51 ye_ming 阅读(515) 评论(0) 推荐(0)
摘要:为什么要lambda函数 匿名函数是许多编程语言都支持的概念,有函数体,没有函数名。1958年,lisp首先采用匿名函数,匿名函数最常用的是作为回调函数的值。正因为有这样的需求,c++引入了lambda 函数,你可以在你的源码中内联一个lambda函数,这就使得创建快速的,一次性的函数变得简单了。例 阅读全文
posted @ 2018-07-14 21:16 ye_ming 阅读(13132) 评论(0) 推荐(2)
摘要:volatile作用: 作为指令关键字,确保本条指令不会受到编译器的优化而省略,而且要求每次直接读值。 定义: volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进 阅读全文
posted @ 2018-07-13 17:25 ye_ming 阅读(431) 评论(0) 推荐(0)
摘要:最近闲来无事,翻阅msdn,在预编译指令中,翻阅到#pragma pack这个预处理指令,这个预处理指令为结构体内存对齐指令,偶然发现还有另外的内存对齐指令aligns(C++11),__declspec(align(#))(Microsoft专用),遂去探究两者之间的不同点。 1、#pragma 阅读全文
posted @ 2018-07-13 16:33 ye_ming 阅读(2263) 评论(0) 推荐(0)
摘要:1 基本语法 decltype 类型说明符生成指定表达式的类型。在此过程中,编译器分析表达式并得到它的类型,却不实际计算表达式的值。 语法为: 编译器使用下列规则来确定expression 参数的类型。 如果 expression 参数是标识符或类成员访问,则 decltype(expression 阅读全文
posted @ 2018-07-13 14:21 ye_ming 阅读(359) 评论(0) 推荐(0)
摘要:一. 什么是拷贝构造函数 首先对于普通类型的对象来说,它们之间的复制是很简单的,例如: 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。 运行程序,屏幕输出100。从以上代码的运行结果可以看出,系统为对象 B 分配了内存并完成了与对象 A 的复制 阅读全文
posted @ 2018-07-12 16:57 ye_ming 阅读(438) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-07-12 15:52 ye_ming 阅读(0) 评论(0) 推荐(0)
摘要:C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。 当您调用一个重载函数或重载运算符时,编译器通过把您所使用的参数类型与定义中的参数类型进行比较 阅读全文
posted @ 2018-07-12 11:00 ye_ming 阅读(208) 评论(0) 推荐(0)
摘要:数据抽象是指,只向外界提供关键信息,并隐藏其后台的实现细节,即只表现必要的信息而不呈现细节。 数据抽象是一种依赖于接口和实现分离的编程(设计)技术。 让我们举一个现实生活中的真实例子,比如一台电视机,您可以打开和关闭、切换频道、调整音量、添加外部组件(如喇叭、录像机、DVD 播放器),但是您不知道它 阅读全文
posted @ 2018-07-12 10:22 ye_ming 阅读(497) 评论(0) 推荐(0)
摘要:我觉得学完虚函数和存虚函数应该趁热看看接口是怎么实现的,因为怎么说,他们都是一个东西。 接口描述了类的行为和功能,而不需要完成类的特定实现。 C++ 接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念。 如果类中至少有一个函数被声明为纯虚函数,则这个 阅读全文
posted @ 2018-07-12 09:05 ye_ming 阅读(253) 评论(0) 推荐(0)
摘要:转自:C++使用thread类多线程编程 C++11中引入了一个用于多线程操作的thread类,下面进行简单演示如何使用,以及如果进行多线程同步。 thread简单示例 thread简单示例 输出: thread detach不阻塞主线程 thread detach不阻塞主线程 两个子线程并行执行, 阅读全文
posted @ 2018-07-11 17:51 ye_ming 阅读(4839) 评论(0) 推荐(1)
摘要:http://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/contents/ 阅读全文
posted @ 2018-07-11 17:07 ye_ming 阅读(153) 评论(0) 推荐(0)
摘要:作者:赵宗晟 出处:https://www.cnblogs.com/zhao-zongsheng/p/9099603.html 很多写C/C++的人都知道“内存对齐”的概念以及规则,但不一定对他有很深入的了解。这篇文章试着从硬件到C++语言、更彻底地讲一下C++的内存对齐。 什么是内存对齐(memo 阅读全文
posted @ 2018-07-11 16:53 ye_ming 阅读(1510) 评论(0) 推荐(0)
摘要:恢复内容开始 在C++中的一种函数申明被称之为:纯虚函数(pure virtual function).它的申明格式如下 在什么情况下使用纯虚函数(pure vitrual function)? 1,当想在基类中抽象出一个方法,且该基类只做能被继承,而不能被实例化; 2,这个方法必须在派生类(der 阅读全文
posted @ 2018-07-11 14:56 ye_ming 阅读(4686) 评论(1) 推荐(0)
摘要:误区 你能估算出结果吗?如果你估算出的结果是A::fun和A::fun2,呵呵,恭喜恭喜,你中圈套了。其实真正的结果是B::fun和B::fun2,如果你想不通就接着往下看。给个提示,&A::fun和&A::fun2是真正获得了虚函数的地址吗? 首先我们回到第二部分,通过段实作代码,得到一个“通用” 阅读全文
posted @ 2018-07-11 14:22 ye_ming 阅读(209) 评论(0) 推荐(0)
摘要:虚函数是如何做到的 如果你没有看过《Inside The C++ Object Model》这本书,但又急切想知道,那你就应该从这里开始) 虚函数是如何做到因对象的不同而调用其相应的函数的呢?现在我们就来剖析虚函数。我们先定义两个类 由于这两个类中有虚函数存在,所以编译器就会为他们两个分别插入一段你 阅读全文
posted @ 2018-07-11 09:36 ye_ming 阅读(574) 评论(0) 推荐(0)
摘要:Struct _finddata_t是用来存储文件各种信息的结构体,使用这个结构体要引用的头文件为“ #include <io.h>”它的结构体定义如下: 改结构体中各成员的变量的含义如下: 这些都是在中定义的宏,可以直接使用,而本身的意义其实是一个无符号整型(只不过这个整型应该是2的几次幂,从而保 阅读全文
posted @ 2018-07-10 22:03 ye_ming 阅读(8005) 评论(1) 推荐(0)
摘要:首先,虚函数是这么定义的,简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进行分离;用形象的语言来解释就是实现以共同的方法,但因个体差异,而采用不同的策略。大家能看懂吗? 反正我是看不懂所以 阅读全文
posted @ 2018-07-10 09:35 ye_ming 阅读(221) 评论(0) 推荐(0)
摘要:关于正常怎么使用gSOAP的话,下面那篇博客已经讲得非常详细,我就不再赘述了 https://www.cnblogs.com/dengpeng1004/p/6165751.html 问题1: WCF server with basicHttpBinding use soap1.1, while gS 阅读全文
posted @ 2018-07-09 11:55 ye_ming 阅读(439) 评论(0) 推荐(0)
摘要:控件讲了这么久,其实我的程序有两个Bug不知道大家有没有发现,这两个Bug都不会报错,对程序运行来说都没有阻碍,但是这种Bug对整个代码来说是一个很大的安全隐患。 什么是内存泄漏 内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致 阅读全文
posted @ 2018-07-09 10:11 ye_ming 阅读(514) 评论(0) 推荐(0)
摘要:先在我们的选项卡可以说能用了,每个标签页都能点进去,但是这还远远没到能用的地步,比如说你把窗口最大化后。 立马就露出马脚了,所以这篇我们要先讲讲tabctrl的最基本的功能实现 改变选项卡大小 上图的原因就是主窗口在改变的大小的时候没有通知选项卡让他跟着主窗口一起变,所以我们现在通知选项卡一下 添加 阅读全文
posted @ 2018-07-07 16:18 ye_ming 阅读(1287) 评论(1) 推荐(0)
摘要:现在做出来的选项卡实在太丑的,咱们怎么把他弄得好看一点呢 tabctrl是可以添加icon图标的,那派生与tabctrl的mfctabctrl肯定也能添加图标,他们两个添加图标的原理一样,但是还是有点不同 首先给项目添加三个图标 然后在成员变量中添加ImageList对象,必须要添加在成员变量中,否 阅读全文
posted @ 2018-07-07 14:51 ye_ming 阅读(2855) 评论(0) 推荐(0)
摘要:CRect rect; GetClientRect(hWnd, rect); HDC hdc = GetDC(hWnd); HDC memDC = CreateCompatibleDC(hdc); BITMAPINFO bmi; bmi.bmiHeader.biSize = sizeof(BITMA 阅读全文
posted @ 2018-07-05 19:02 ye_ming 阅读(757) 评论(0) 推荐(0)
摘要:窗体创建完成,接下来我们讲讲控件的使用 首先在CFormView窗体下选项卡的成员变量,这里我选择MFC下的选项卡类库:CMFCTabCtrl 在初始化中动态创建选项卡并设置选项卡的样式,这里我们使用了Creat函数,他的原型是 第一个参数 Style style 是一个枚举类型,它定义了选项卡的样 阅读全文
posted @ 2018-07-05 13:47 ye_ming 阅读(1445) 评论(0) 推荐(0)
摘要:在MFC中可以创建多种类型的窗口程序,如对话框程序、单文档结构程序(非文档/视图结构)、单文档(文档/视图结构)以及多文档视图结构程序等。 在编写一般的小工具时,我们的首选显然是对话框程序,不过基于对话框的程序不支持视图类,有些功能实现起来会麻烦许多。此时我们可以使用CFormView作为基类来创建 阅读全文
posted @ 2018-07-05 08:23 ye_ming 阅读(678) 评论(0) 推荐(0)
摘要:很多做软件开发的人都有一种对事情刨根问底的精神,例如我们一直在用的MFC,很方便,不用学太多原理性的知识就可以做出各种窗口程序,但喜欢钻研的朋友肯定想知道,到底微软帮我们做了些什么,让我们在它的框架下可以简单的写程序。本文开始就跟大家分享一位同行前辈写的MFC核心机制分析(稍作整理),语言朴实易懂, 阅读全文
posted @ 2018-07-05 08:09 ye_ming 阅读(1297) 评论(0) 推荐(0)
摘要:现在在Windows下的应用程序开发,VS.Net占据了绝大多数的份额。因此很多以前搞VC++开发的人都转向用更强大的VS.Net。在这种情况下,有很多开发人员就面临了如何在C#中使用C++开发好的类的问题。下面就用一个完整的实例来详细说明怎样用托管C++封装一个C++类以提供给C#使用。 比如,现 阅读全文
posted @ 2018-07-04 18:05 ye_ming 阅读(332) 评论(0) 推荐(0)
摘要:在头两篇中介绍了CListCtrl::SortItems() 方法的使用和其中的一个排序方法,这篇介绍另一种方法 CList 点击表头排序 (1)SortItems函数 CList 点击表头排序 (2)两种排序方法中其中一种 这种方法不在需要数据绑定,只要确定你点击的表头的第几列就行,过程与第一种是 阅读全文
posted @ 2018-07-04 13:57 ye_ming 阅读(516) 评论(0) 推荐(0)
摘要:上一篇讲解SortItem()方法如何使用,虽然都是抄别人的但是就是想让大家有个大概的了解 CList 点击表头排序 (1)SortItems函数 点击表头排序基本思路都是 1.首先响应HDN_ITEMCLICK 消息来获取点击表头的位置 2.设置结构体来存储排序信息,结构体信息主要有三个 (1)C 阅读全文
posted @ 2018-07-04 13:44 ye_ming 阅读(1039) 评论(0) 推荐(0)
摘要:点击表头排序整体的思路都是去 CListCtrl类中的方法SortItems去实现 CListCtrl::SortItems的原型是: BOOL SortItems( PFNLVCOMPARE pfnCompare, DWORD dwData ); 第一个参数pfnCompare为回调函数,形式为: 阅读全文
posted @ 2018-07-04 13:21 ye_ming 阅读(658) 评论(0) 推荐(0)
摘要:响应消息 ON_NOTIFY(NM_CUSTOMDRAW, ListCtrl的ID, OnNMCustomdrawList) 实现函数OnNMCustomdrawList void CFinishWellToFind::OnNMCustomdrawList(NMHDR *pNMHDR, LRESUL 阅读全文
posted @ 2018-07-04 13:12 ye_ming 阅读(599) 评论(0) 推荐(0)