- 博客(42)
- 资源 (1)
- 收藏
- 关注
原创 cast族转换符使用总结
示例1:class A {};class B : public A {};class C {};A* pA = new A();B* pB = static_cast(pA);C* pC = static_cast(pA); // 不能通过编译,C和A没有关系long lData = static_cast(pA); // 不能通过编译,long是内置数据类型,不是类解析:static_c
2006-11-27 10:29:00 912
转载 HOOK专题
http://www.microsoft.com/china/community/program/originalarticles/techdoc/hook.mspx WINDOWS钩子函数http://www.bc-cn.net/Article/kfyy/hb/jszl/200602/3695.htmlWindows 钩子两点需要注意的地方http://hi.baidu.com/grey
2006-11-26 23:21:00 1056
转载 深入探讨C++中的引用
摘要:介绍C++引用的基本概念,通过详细的应用分析与说明,对引用进行全面、透彻地阐述。 关键词:引用,const,多态,指针 引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。我在工作中发现,许多人使用它仅仅是想当然,在某些微妙的场合,很容易出错,究其原由,大多因为没有搞清本源。故在本篇中我将对引用进行详细讨论,希望对大家更好地理解和
2006-11-26 22:34:00 719
转载 深入浅出Win32多线程程序设计之线程通信
深入浅出Win32多线程程序设计之线程通信作者:宋宝华出处:天极开发责任编辑: 方舟 [ 2005-12-16 08:48 ]线程之间通信的两个基本问题是互斥和同步。简介 线程之间通信的两个基本问题是互斥和同步。 线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒。 线程互斥是指对于共享的
2006-11-24 22:18:00 853
转载 Windows® CE 系统中的同步机制
Windows® CE 系统中的同步机制 田海立2006-1-17 摘要Windows® CE 是微软系列嵌入式平台所采用的操作系统内核。本文讨论了 WinCE 进程/线程之间的同步机制,给出了它们的典型应用场景。这些同步机制包括临界区、互斥体、信号量、事件、互锁函数和消息队列等。关键字:同步,临界区,互斥体,信号量,事件,消息队列Keywords: Synchroni
2006-11-24 22:14:00 1513
转载 C++知识点
一、#include “filename.h”和#include 的区别#include “filename.h”是指编译器将从当前工作目录上开始查找此文件#include 是指编译器将从标准库目录中开始查找此文件 二、头文件的作用 加强安全检测 通过头文件可能方便地调用库功能,而不必关心其实现方式 三、* , &修饰符的位置对于*和&修饰符,为了避
2006-11-24 22:12:00 804
转载 C/C++ 笔试、面试题目大汇总
1.求下面函数的返回值(微软)int func(x) { int countx = 0; while(x) { countx ++; x = x&(x-1); } return countx; } 假定x = 9999。 答案:8思路:将x转化为2进制,看含有的1的个数。2. 什么是“引用”?申明和
2006-11-24 22:10:00 1574
原创 几条赋值语句的地址分析
char str1[] = _T("abc")char str2[] = _T("abc")结果:str1 != str2分析:str1和str2是字符数组类型,它们在栈区中获得空间并被用常量"abc"初始化,所以这两个数组的首地址str1和str2的值是不一样的const char str3[] = _T("abc")const char str4[] = _T("abc")结果:s
2006-11-24 18:53:00 1023
原创 "伪虚函数"示例
示例1:class CBase{ virtual void Fun1() const {};};class CDrived : public CBase{ virtual void Fun1() {};};分析:CDrived::Fun1不是继承自CBase的虚函数了,而是一个新的虚函数,因为上下两个函数的声明不一样——下面函数声明后面没有const.要想重新实现基类的虚函数,虚函数的声明
2006-11-23 22:21:00 855
转载 const使用详解
关于C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,现将本人的一些体会总结如下,期望对大家有所帮助: 一 const基础如果const关键字不涉及到指针,我们很好理解,下面是涉及到指针的情况: int b = 500;const int* a = &b; [1]int const *a = &b; [2]int* const a = &b
2006-11-23 21:47:00 700
转载 const使用要点
正文1、什么是const? 常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。(当然,我们可以偷梁换柱进行更新:) 2、为什么引入const? const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点 。 3、cons有什么主要的作用? (1)可以定义const常量,具有不可变性。 例如: const i
2006-11-23 21:36:00 724
转载 VC++中使用内存映射文件处理大文件
摘要: 本文给出了一种方便实用的解决大文件的读取、存储等处理的方法,并结合相关程序代码对具体的实现过程进行了介绍。 引言 文件操作是应用程序最为基本的功能之一,Win32 API和MFC均提供有支持文件处理的函数和类,常用的有Win32 API的CreateFile()、WriteFile()、ReadFile()和MFC提供的CFile类等。一般来说,以上这些函数可以满足大多数场合的要求
2006-11-23 15:00:00 690
转载 共享内存实现进程间大数据的交换
引言 进程间的数据交换和共享是一种非常重要和实用的技术。大、中型软件的开发设计多是由众多程序设计人员的合作完成,通常一个程序设计人员只负责其中一个或几个模块的开发,这些模块可以是动态链接库也可以是应用程序或是其他形式的程序组件。这些独立开发出来的程序模块最终需要作为一个整体来运行,即组成一个系统,在系统运行期间这些模块往往需要频繁地进行数据交换和数据共享,对于动态链接库同其主调应用程序
2006-11-23 14:10:00 991
原创 引起线程死锁的一种情况及解决方法
typedef CList CListData;class CDataDlg{public: void InsertToListCtrl(const CListData& ListData) { m_cs.Lock(); for (...) { m_ctlListData.InsertItem(...); } m_cs.Unlock(); }protected: CListC
2006-11-23 11:30:00 2366
原创 删除CList对象的简便写法
// 原先void CNetDiskViewData::RemoveAllUser(){ CGuardLock Guard(&m_csUser); CUserInfo *pUser(NULL); POSITION pos(NULL); pos = m_ListUser.GetHeadPosition(); while (pos) { pUser = (CUserInfo*)m_ListUse
2006-11-23 10:56:00 1573
原创 类设计问题:保护和暴露
typedef CList CListObj;class CData{public: const CListObj& ListObj() const { return m_listObj; } CListObj& ListObj() { return m_listObj; }protected: CListObj m_listObj; mutable CCriticalSection m_cs
2006-11-23 10:43:00 833
转载 MVC模式介绍及应用
MVC中科永联高级技术培训中心(www.itisedu.com) MVC模式是"Model-View-Controller"的缩写,中文翻译为"模式-视图-控制器"。MVC应用程序总是由这三个部分组成。Event(事件)导致Controller改变Model或View,或者同时改变两者。只要Controller改变了Models的数据或者属性,所有依赖的View都会自
2006-11-23 10:15:00 4571
转载 摩托罗拉C++面试题
1.介绍一下STL,详细说明STL如何实现vector。Answer:STL (标准模版库,Standard Template Library.它由容器算法迭代器组成。STL有以下的一些优点:可以方便容易地实现搜索数据或对数据排序等一系列的算法;调试程序时更加安全和方便;即使是人们用STL在UNIX平台下写的代码你也可以很容易地理解(因为STL是跨平台的)。vector实质上就是一个动态数组,会根
2006-11-22 11:51:00 827
转载 问题
嵌入式开发.C语言面试题 预处理器(Preprocessor) 1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #
2006-11-22 11:46:00 747
原创 Visual C++.NET 2005中的STL简介
【导读】在STL.NET的设计中,STL的实现使用了CLI泛型和C++模版机制。2005版本的C++将加入C++/CLI动态编程的支持,应当会成为最能够满足程序员设计的语言。 在STL.NET的设计中,STL的实现使用了CLI泛型和C++模版机制。2005版本的C++将加入C++/CLI动态编程
2006-11-20 21:31:00 775
原创 实例解析C++/CLI之代理与事件
【导读】在C++/CLI中,代理是对函数进行包装的对象;而事件是一种为客户程序提供通知的类机制。本文使用代理通过函数来达到让一个句柄在不同的时间,被引用至不同的对象,从而以更抽象的方法来解决程序中的问题。 在C++/CLI中,代理是对函数进行包装的对象;而事件是一种为客户程序提供通知的类机
2006-11-20 21:27:00 1063
原创 C/C++中的整型常识
【导读】多人对C/C++中的整型不太了解,导致代码移植的时候出现问题,本文在此总结一下 很多人对C/C++中的整型不太了解,导致代码移植的时候出现问题,本人在此总结一下:a. C/C++对整型长度的规定是为了执行效率,将int定义为机器字长可以取得最大的执行速度;b. C/C++中整型包括:int, char 和 enum, C++中还包含bool类型,C99中bool是一个宏,实
2006-11-20 21:23:00 1108
原创 VC++实现Win2000下直接读写磁盘扇区
【导读】本文主要介绍了在Windows 2000下对磁盘扇区数据的直接读写访问方法,并在此基础上实现了对磁盘扇区内容的查看、基于扇区的数据备份与恢复、对磁盘信息的彻底擦除等一些有着实际意义的应用。引言由于Windows 操作系统在很大程度上采取了访问安全保护机制(例如,在Windows操作系统下不能直接访问物理内存、不能使用各种DOS、BIOS中断等等),使得广大程序设计人员在长时间的开发过程
2006-11-20 21:22:00 1158 1
转载 用引用类型实例化模版参数
// 示例1template typename ARG_TYPE = T&>class CMyList{public: CMyList(int nSize) { ASSERT(nSize > 0); m_pList = new T[m_nSize = nSize]; ZeroMemory(m_pList, m_nSize * sizeof(T)); } ~CMyList() { dele
2006-11-20 09:35:00 907
转载 软件架构的相关概念和实践
2006年8月底,我有幸参加了一个架构师培训,通过这个培训,清晰了很多概念,结合自己的知识和经验,对公司软件应用系统的架构设计有了很多想法,特撰写本文档,把自己学得的系统架构知识和自己的思考与大家共享,希望对公司设计人员进行设计工作时有所帮助。本文中很多内容都是我个人的观点,我个人技术的深度和广度也不够,肯定会有不少不太严谨的地方。 1. 系统架构知识 1.1. 什么是企业应用 很难给
2006-11-19 21:23:00 1124
转载 从程序员到软件设计师的过程
前言:软件产业发展到今天,分工越来越细。程序员做为一个通用的称谓已经无法确切定义各种工作的特点和分类。正因为软件开发中各种职责区分不清,无论是刚刚写代码的新手还是具有多年经验的老手,一概被扣上程序员的通用名称,这也使得很多进入这个领域的软件开发人员无法制定自己未来的技术职业发展之路。 实际上,软件公司也逐渐认识到了对程序员分类的重要性,开始将各种职位定义的更加准确。对于从事软件开发的程序员来说
2006-11-19 21:22:00 1653
转载 控制反转(Ioc)的设计原则
控制反转(Ioc)的设计原则 --减轻组件间的依赖性及藕合性的设计原则导读1.缘由2、回顾面向对象思想3.什么是Ioc4、现行的几种实现方式5.结论6.附录一、缘由 “万事万物皆有姻缘”,这一句话本是佛家偕语。不过笔者
2006-11-19 21:17:00 602
转载 面向对象思想的精典解说
面向对象思想为软件设计与开发赋予了哲学的意义。在哲学的世界里,小至沙粒微尘,大至日月星辰乃至宇宙,均可视为单独的个体对象而存在。如果以哲学的目光凝视程序的世界,又何尝不是如此?一个用户,一种销售策略,一条消息,或是某种算法,一个Web的网页,面向对象思想均将其看作为一种对象。而每一种对象,都有其单独的生命周期,谁来创建它,谁来销毁它,它的内在属性,表现行为,以及它与外界之间的关系和
2006-11-19 21:15:00 903
原创 类模版继承中的虚函数使用示例
示例1:templateclass CBaseTempl{private: virtual void VirtualFun1() = 0 { std::cout }};templateclass CDerivedTempl : public CBaseTempl{public: virtual void VirtualFun1() { std::cout }};void App
2006-11-16 09:40:00 1286
原创 类模板派生子模板示例
示例1: #include using namespace std; template class A { public: T m_A; void test(T a){cout }; template class B : publi
2006-11-15 23:22:00 1101 1
转载 VC++动态链接库(DLL)编程深入浅出系列
VC++动态链接库(DLL)编程深入浅出(一)http://www.pconline.com.cn/pcedu/empolder/gj/vc/0509/698632.htmlVC++动态链接库(DLL)编程深入浅出(二)http://www.pconline.com.cn/pcedu/empolder/gj/vc/0509/699672.htmlVC++动态链接库(DLL)编程深入浅出(三
2006-11-15 15:43:00 1663
原创 类模版偏特化示例
using namespace std;templateclass CTempl {public: void Fun() { std::cout " }};// 模版特化情形1templateclass CTempl {public: void Fun() { std::cout " }};// 模版特化情形2templateclass CTempl {public: void
2006-11-15 12:25:00 838
原创 类模版成员特化示例
// 类模版的某个成员函数不适用于某种类型时,可以对该成员函数针对类型进行特化.// 示例:using namespace std;class CExcepter {};template class CTempl{public: CTempl() {} ~CTempl() {}public: void FunName() { std::cout }};// 假设类模板的成员函
2006-11-15 11:17:00 881
转载 关于volatile关键字的说明以及测试
volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。使用该关键字的例子如下:int volatile nVint;当要求使用volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,即使
2006-11-14 19:46:00 692
转载 C++基本功:全面掌握const、volatile和mutable关键字
C++程式设计过程中,const的使用可以频度是非常高的.它在保证程式安全方面起到了不可估量的作用.用一句话来表达最确切不过了:”小兵立大功”. 有了const,那么mutable当然缺不了. 然作为const的同胞兄弟,volatile却在很多人的视野中消失.其实volatile担负的责任有何尝小呢? 自然,它们的用法多样而灵巧,以至新手迷惑久久,下面就来系统的探讨总结一下吧:
2006-11-14 19:44:00 749
原创 理解C++面向对象程序设计中的抽象理论
很多书在一开始就开始学习josephus问题,为了让大家前面学起来较为容易我把前面涉及到此问题的地方都故意去掉了,现在我们已经学习过了结构体和类,所以放在这里学习可能更合适一些。 在正式开始学习之前我们先回顾一下如何利用数组和结构体的方式来解决,最后我们再看一下如何利用面向对象的抽象理念进行解决此问题的程序设计,相互对比,找出效率最高,最容易理解,最方便维护的程序来,说明利用面向对象的抽象理念
2006-11-13 22:09:00 1157
转载 教你理解复杂的C/C++声明
介绍[被屏蔽广告] 曾经碰到过让你迷惑不解、类似于int * (* (*fp1) (int) ) [10];这样的变量声明吗?本文将由易到难,一步一步教会你如何理解这种复杂的C/C++声明。 我们将从每天都能碰到的较简单的声明入手,然后逐步加入const修饰符和typedef,还有函数指针,最后介绍一个能够让你准确地理解任何C/C++声明的“右左法则”。 需要强调一下的是,复杂的C/C+
2006-11-13 22:06:00 752
转载 详细解析C语言中的sizeof
一、sizeof的概念sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。 二、sizeof的使用方法 1、用于数据类型 sizeof使用形式:sizeof(type) 数据类型必须用括号括住。如
2006-11-13 21:54:00 697
转载 如何编写异常安全的C++代码
关于C++中异常的争论何其多也,但往往是一些不合事实的误解。异常曾经是一个难以用好的语言特性,幸运的是,随着C++社区经验的积累,今天我们已经有足够的知识轻松编写异常安全的代码了,而且编写异常安全的代码一般也不会对性能造成影响。 使用异常还是返回错误码?这是个争论不休的话题。大家一定听说过这样的说法:只有在真正异常的时候,才使用异常。那什么是“真正异常的时候”?在回答这个问题以前,让我们先看
2006-11-13 21:53:00 641
转载 C++中接口与实现分离的技术
在用C++写要导出类的库时,我们经常只想暴露接口,而隐藏类的实现细节。也就是说我们提供的头文件里只提供要暴露的公共成员函数的声明,类的其他所有信息都不会在这个头文件里面显示出来。这个时候就要用到接口与实现分离的技术。 下面用一个最简单的例子来说明。 类ClxExp是我们要导出的类,其中有一个私有成员变量是ClxTest类的对象,各个文件内容如下: lxTest.h文件内容:
2006-11-13 21:51:00 624
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人