C++
曲终人散121
努力。
展开
-
MFC MDI和SDI非客户区框架界面美化之----标题栏以及边框美化
1、美化方式:贴图、重绘 优点:简单,易理解!适合 缺点:美化限制较大,实际使用意义不大。2、基本思路是重载CMainFrame类的DefWindowProc()函数,并判断消息为:WM_NCPAINT,WM_NCACTIVATE,WM_NOTIFY的时候,调用自己的转载 2016-11-03 10:55:12 · 1718 阅读 · 1 评论 -
MFC多线程 —— 线程同步
线程间的同步 常用的同步对象:(1)临界区(Critical Section)(2)互斥(Mutex) (3)信号量(Semaphore)(4)事件(Event)MFC提供了几种同步类和同步辅助类,包含在afxmt.h中(1)同步对象基类(CSyncObject) 抽象类,为Win32中的同步对象提供通用性能(2)临界区类转载 2016-11-27 21:45:46 · 1073 阅读 · 0 评论 -
C/C++ 指针与引用的区别
1. 指针是一个实体,而引用仅是个别名;2. 引用使用时无需解引用(*),指针需要解引用;3. 引用只能在定义时被初始化一次,之后不可变;指针可变;4. 引用和指针的 const修饰,意义不一样;5. 引用不能为空,指针可以为空;6. “sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身(所指向的变量或对象的地址)的大小;7.原创 2016-09-23 11:04:15 · 422 阅读 · 0 评论 -
C/C++ 面试常见题目
1.strcpy函数的写法char * strcpy( char *strDest, const char *strSrc ) { assert( (strDest != NULL) && (strSrc != NULL) ); char *address = strDest; while( (*strDest++ = * strSrc++)原创 2017-01-13 14:16:49 · 386 阅读 · 0 评论 -
C/C++ const 修饰符的作用
一.基本作用1 const与define功能相似,具有定义常量功能。const定义的常量具有数据类型,编译器会对数据类型安全进行检查,而宏定义则不会。2可以保护值和指针不会被修改,提升程序的健壮性。 如:一个函数传入指针,不允许修改其指向的内容。3.与define功能一样,方便的对参数进行修改调整。4.const 定义的常量,在内存中只由一个,没有多个拷贝。原创 2016-09-23 21:13:08 · 1564 阅读 · 0 评论 -
C++ 类中static 静态成员
一、静态成员可以是常量、引用、指针、类类型等二、静态成员属于类,不属于类的某一个对象,故不能在构造时初始化,必须在类的外部定义和初始化每个静态成员。三、类的成员函数不与任何对象绑定在一起,没有this指针。静态成员函数不能声明为const(const修饰的函数必须含有this指针)。四、静态成员的类初始化原创 2016-10-11 14:44:03 · 381 阅读 · 0 评论 -
C++对象模型之第二章——构造函数语义学
一、构造函数编译器会合成4个隐性的非无用的构造函数的情况:1.含有带有默认构造函数的成员类的对象。这个合成构造函数只有被真正使用时,才会被合成。这时有一个问题产生,即在多个不同的编译块产生都各自每个的合成构造函数。如何避免多个默认构造函数产生,将合成的默认、拷贝、析 构、赋值拷贝以inline方式完成。 如果,类成员有多的,编译器不管该类有没有默认构造函数,都会调用每个成原创 2017-05-04 22:34:17 · 719 阅读 · 0 评论 -
C++类成员必须列表初始化
1. 成员是const类型2.成员是引用3.成员属于某种类型,而该类型没有默认构造函数。原创 2016-10-08 19:11:57 · 924 阅读 · 0 评论 -
C++中this指针
今天把this知识点做个汇总。1.什么是this先要理解class的意思,class应该理解为一种类型,象int,char一样,是用户自定义的类型。(虽然比int char这样build-in类型复杂的多,但首先要理解它们一样是类型)。用这个类型可以来声明一个变量,比如int x, myclass my等。这样就像变量x具有int类型一样,变量my具有myclass类型。理解了这个原创 2016-11-15 09:33:49 · 572 阅读 · 0 评论 -
vs2010 CMFCToolBar 工具栏 如何修改背景颜色
vs2010 所建立的MFC工程,在创建住框架窗口时,通常会是调用OnApplicationLook函数。在此函数中调用CMFCVisualManager选件完成软件界面的管理,这样工具栏的颜色由CMFCVisualManager采取的风格有关,就被不能更改,无论是在子类中覆盖OnEraseBkgnd函数都无效。具体解决办法:工具栏背景重绘其实需要两个部分:客户区和非客户区的绘制。原创 2017-08-24 10:30:33 · 6281 阅读 · 1 评论 -
C++ 关键字typeid 运行时类型检查
在揭开typeid神秘面纱之前,我们先来了解一下RTTI(Run-Time Type Identification,运行时类型识别),它使程序能够获取由基指针或引用所指向的对象的实际派生类型,即允许“用指向基类的指针或引用来操作对象”的程序能够获取到“这些指针或引用所指对象”的实际派生类型。在C++中,为了支持RTTI提供了两个操作符:dynamic_cast和typeid。 dynam转载 2016-11-27 19:46:59 · 2109 阅读 · 0 评论 -
c++ 中重载 覆盖 隐藏
一.重载 1.重载的定义:如果同一个作用域内的几个函数名字相同参数列表不同,称之为重载。 1).重载作用在静态链接时 重载发生在编译阶段。 2).在同一个作用域(如一个类的内部) 如果作用域不一样会发生什么呢? 此时,局部作用域(相对来讲)与外部作用域(相对来讲),出现了变量(包括变量和函数)名字一样,则外部作用域定义的函数被隐藏。如原创 2016-10-17 16:56:55 · 467 阅读 · 0 评论 -
C++事件的建立和使用SetEvent,ResetEvent
一、事件是很常用的多线程同步互斥机制 函数原型如下所示,一共四个参数:HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes, // SECURITY_ATTRIBUTES结构指针,可为NULL BOOL bManualReset, // 手动/自动转载 2016-11-28 21:02:03 · 5715 阅读 · 1 评论 -
this指针与虚表
原文地址:http://blog.csdn.net/justaipanda/article/details/8137435我们知道,在C++的非静态成员函数中,有一个隐含的参数,即this指针,利用它,我们可以访问相应对象的数据成员,那么究竟this指针是如何作用的呢?下面先来看一个例子。有下面的一个简单的类:[cpp] view plain copypri转载 2016-11-12 16:14:00 · 1135 阅读 · 0 评论 -
C++中的多态
多态(Polymorphism)是面向对象的核心概念,本文以C++为例,讨论多态的具体实现。C++中多态可以分为基于继承和虚函数的动态多态以及基 于模板的静态多态,如果没有特别指明,本文中出现的多态都是指前者,也就是基于继承和虚函数的动态多态。至于什么是多态,在面向对象中如何使用多态,使用 多态的好处等等问题,如果大家感兴趣的话,可以找本面向对象的书来看看。 为了方便说明,下面举一个简单转载 2016-11-13 15:05:31 · 267 阅读 · 0 评论 -
C++class默认生成4个函数
序:对于一个空类,编译器默认生成四个成员函数:默认构造函数、析构函数、拷贝构造函数、赋值函数一,默认构造函数 默认构造函数(default constructor)就是在没有显式提供初始化式时调用的构造函数。它由不带参数的构造函数,或者为所有的形参提供默认实参的构造函数定义。如果定义某个类的变量时没有提供初始化式就会使用默认构造函数。 如果用户定义的类中没有显式的定义任何转载 2016-11-09 14:32:34 · 451 阅读 · 0 评论 -
C++ 中不能依赖合成默认构造函数
原因一:只有没有声明默认构造函数时,才会调用合成默认构造函数。原因二:对于某些类,使用合成默认构造函数会产生错误。如:内置类型或复合类型(数组和指针)的对象被默认初始化,其值是未定义的。原因三:有的类中,含有其他类类型的成员,如果该类没有默认构造函数,则编译产生错误。原创 2016-10-09 17:02:47 · 1029 阅读 · 0 评论 -
C++虚函数表剖析
原文地址:http://blog.csdn.net/lihao21一、概述为了实现C++的多态,C++使用了一种动态绑定的技术。这个技术的核心是虚函数表(下文简称虚表)。本文介绍虚函数表是如何实现动态绑定的。二、类的虚表每个包含了虚函数的类都包含一个虚表。 我们知道,当一个类(A)继承另一个类(B)时,类A会继承类B的函数的调用权。所以如果一个基类包含了虚函数,那么其继承类也可转载 2016-11-13 16:17:54 · 650 阅读 · 1 评论 -
MFC 多线程及线程同步
一、MFC对多线程编程的支持 MFC中有两类线程,分别称之为工作者线程和用户界面线程。二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环。 工作者线程没有消息机制,通常用来执行后台计算和维护任务,如冗长的计算过程,打印机的后台打印等。用户界面线程一般用于处理独立于其他线程执行之外的用户输入,响应用户及系统所产生的事件和消息等。但对于Win32的API转载 2016-11-27 21:54:13 · 3898 阅读 · 0 评论 -
C/C++内存管理详解 堆 栈
原文链接:http://chenqx.github.io/2014/09/25/Cpp-Memory-Management/内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一转载 2016-11-17 09:32:43 · 590 阅读 · 0 评论 -
各种特殊函数为什么不能是虚函数
原文链接:http://m.blog.csdn.NET/blog/crazy_programmer_p/389042811>内联函数 内联函数是在编译时期展开,而虚函数的特性是运行时才动态联编,所以两者矛盾,不能定义内联函数为虚函数。2> 构造函数构造函数用来创建一个新的对象,而虚函数的运行是建立在对象的基础上,在构造函数执行时,对象尚未形成,所以不能将构造转载 2016-11-17 09:40:31 · 413 阅读 · 0 评论 -
C++ 动态类型和静态类型
转载地址:http://blog.csdn.net/lynnboy/article/details/154894C++ 标准明确定义:1.3.11 static type [defns.static.type]the type of an expression (3.9), which type results from analysis of the program without转载 2016-11-14 15:17:56 · 1196 阅读 · 0 评论 -
改变 自绘 CListCtrl、CHeaderCtrl 高度、字体、颜色和背景及其动态创建中的问题
以下是网上流传自绘CListCtrl控件的方法:不过有几个问题需要注意一下:以下功能在静态创建时没有问题,动态创建是会出现两个问题一.控件的表没有自动重绘,没有实现换肤。在CListCtrlCL类中设置断点,进入不了CListCtrlCl::DrawItem(),原因是在动态创建是没有LVS_OWNERDRAWFIXED风格。 解决办法: m_list->Cre原创 2016-12-10 09:14:20 · 7392 阅读 · 0 评论