CPP
YasinLeeX
yasin.lee.x@outlook.com
In fact, a good percentage of the total code in a program consists of nothing but error checking.
展开
-
回调机制详解
载自:http://blog.csdn.net/wubin1124/archive/2009/07/28/4386269.aspx一回调函数我们经常在C++设计时通过使用回调函数可以使有些应用(如定时器事件回调处理、用回调函数记录某操作进度等)变得非常方便和符合逻辑,那么它的内在机制如何呢,怎么定义呢?它和其它函数(比如钩子函数)有何不同呢?使用回调函数实际上就是在调用转载 2010-05-25 16:40:00 · 1500 阅读 · 0 评论 -
虚函数的深入理解
声明:本文载自以下链接http://www.cnblogs.com/taoxu0903/archive/2008/02/04/1064234.html个人认为这篇文章的理解是比较深入的!收藏下来,仔细研究下!理解虚函数( virtual function )的几个关键点:1. 理解早绑定(early binding)、晚绑定(late binding转载 2010-05-30 13:49:00 · 820 阅读 · 0 评论 -
Visual C++程序调试方法入门
概述 调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。 这里我简要的根据自己的经验列出调试中比较常用的技巧,希望对大家有用。 本文约定,在选择菜单时,通过/表示分级菜单,例如File/Open表示顶级菜单File的转载 2010-05-30 16:36:00 · 1023 阅读 · 0 评论 -
数据结构 迷宫 C++源代码 非递归解法
coder_jack@126.com日记写到:我现在还在写控制台程序!这么多年来,我没有一丝进步!要加油!程序很简单,用递归实现关键部分就好了,然而我的不同之处是,我没有用递归,我自己用栈解决了这个问题!虽然在本质上递归是由操作系统来构建一个栈,但是如果我能自己构造一个栈来解决问题的话,我就会对栈和递归的理解更深入一些!而且我还实现了以动态的方式显示行走路线,感觉很有趣!呵呵!以下是源代码原创 2010-05-30 16:49:00 · 1709 阅读 · 0 评论 -
const用法详解
声明:本文载自网络,原文写的很详细,值得借鉴,只是有的地方句子不通顺,(*^__^*) 原文连接地址:http://www.yuanma.org/data/2007/0429/article_2549.htm面向对象是C++的重要特性. 但是c++在c的基础上新增加的几点优化也是很耀眼的就const直接可以取代c中的#define以下几点很重要,学不好后果也也很严重转载 2010-05-30 13:48:00 · 914 阅读 · 0 评论 -
句柄的理解
句柄是一种指向指针的指针。我们知 道,所谓指针是一种内存地址。应用程序启动后,组成这个程序的各对象是住留在内存的。如果简单地理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址 访问对象。但是,如果您真的这样 认为,那么您就大错特错了。我们知道,Windows是一 个以虚拟内存为基础的操作系统。在这种系统环境下,Windows内存管理器经常在内存中来回 移动对象,依此来满足原创 2010-05-30 16:38:00 · 838 阅读 · 0 评论 -
C++ string详解
之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。 好了,进入正题………首先,为了在我们的程序中使用s原创 2010-05-30 16:46:00 · 724 阅读 · 0 评论 -
模态和非模态对话框
关于 孙鑫VC P226页做了一个非模态的对话框,采用的方式是指针方式,然后发现在已经打开了这个对话框的时候还能够继续在打开一个该对话框。后来就想,怎么样做能够只把该对话框只开一个呢?采用设置一个类的成员的方式来做一个非模态对话框,然后发现如果已经打开一个该对话框时,再试图去打开该对话框的话系统会出现运行时错误,很显然,原因是我们不能多次对一个对话框对象使用Creat()函原创 2010-05-30 16:37:00 · 860 阅读 · 0 评论 -
什么是回调函数
[ 原创文档 本文适合中级读者 已阅读7366次 ] 声明函数指针并实现回调 作者:Danny Kalev 编译:赵湘宁 原文出处:Declaring Function Pointers and Implementing Callbacks转载 2010-05-30 16:40:00 · 697 阅读 · 0 评论 -
view类中的OnCreate()函数
自己试了下,关于OnCreate()函数的功能应该这么来理解:该函数只在窗口创建的时候调用一次,但是窗口创建并不意味着就能看见窗口,创建完了后要产生窗口,即窗口从无到有,则要发生窗口重绘。当然该函数的调用意味着窗口已经产生,只不过没有出现而已。所以一些需要在窗口显现前处理的事情就可以放在该函数中去处理了,比如产生一个插入点,就调用CreateSolidCaret();出入点产生后就不会原创 2010-05-30 16:42:00 · 1711 阅读 · 0 评论 -
堆和栈的区别
堆和堆栈的区别一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)——由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) —— 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配原创 2010-05-30 16:52:00 · 1188 阅读 · 0 评论 -
char *p
char *p;p="hello"; //这是正确的 系统先给字符串分配存储空间,并将字符串的首地址赋值给p。————————————————char *p;scanf("%s",p); //这个不对,因为scanf将来会将一个字符串存储到p所指空间,然而那时候,p却没有指向任何位置! ————————————————char *p;char原创 2010-05-30 16:54:00 · 1133 阅读 · 1 评论 -
how to create a thread in win32 platform
http://www.cs.rpi.edu/academics/courses/netprog/WindowsThreads.htmlWin32 APIs for ThreadsThe Win32 API to create a new thread isHANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttribu原创 2012-05-07 16:01:45 · 958 阅读 · 0 评论 -
C++/C宏定义中## 连接符与# 符的含义
## 连接符号由两个井号组成,其功能是在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串。但它不可以是第一个或者最后一个子串。所谓的子串(token)就是指编译器能够识别的最小语法单元。具体的定义在编译原理里有详尽的解释,但不知道也无所谓。同时值得注意的是#连接符是把传递过来的参数当成字符串进行替代。下面来看看它们是怎样工作的。这是MSDN上的一个例子。 假设程原创 2014-10-31 15:42:24 · 1543 阅读 · 0 评论 -
深入理解构造函数和析构函数以及父类和子类的部分关系
#include "iostream.h"class Base{public: int base; Base(){cout<<"Base 的构造函数,并置成员base的值为0"<<endl;base=0;} ~Base(){cout<<"Base 的析构函数"<<endl;} void base_f(){cout<<"Base 的一般函数,并改变原创 2010-05-30 16:35:00 · 1136 阅读 · 0 评论 -
C++中虚函数和多态的理解和测试程序
/***********************************************************************C++ 的类机制中有支持多态的技术来解决抽象编程,它用的是一种滞后捆绑(late binding)技术。这种技术,通过预先设定其成员函数的虚函数性质,使得任何捆绑该成员函数的未定类型的对象操作在编译时,都以一个不确定的指针特殊地“引命待发”来编原创 2010-05-30 13:51:00 · 738 阅读 · 0 评论 -
回调函数,函数指针与函数对象
以下转自:http://shudingbo.spaces.live.com/blog/cns!C33400475B08F157!423.entry?wa=wsignin1.0&sa=2465151181. 什么是回调函数 回调函数(callback Function),顾名思义,用于回调的函数。 回调函数只是一个功能片段,由用户按照回调函数调用约定来实现的转载 2010-05-25 14:07:00 · 1033 阅读 · 0 评论 -
软件项目管理实践经验谈
软件项目成功的要素——软件项目管理实践经验谈 2005.08.29 来自:《程序员》 王晓毅 曾经有个笑话,说三个软件高级人材等待上帝安排工作,一个说自己擅长抽象思维,上帝说那就做系统分析师吧;一个说自己工作非常细心,上帝说那就做QA;最后一个说,我实在没有更多的才能,那就做项目经理吧。有句项目管理名言则是这个笑话的最好解释:对项目经理的知识要求是要有1英里转载 2010-05-27 21:23:00 · 1261 阅读 · 0 评论 -
被教材黑了的 typedef
typedef用来声明一个别名,typedef后面的语法,是一个声明。本来笔者以为这里不会产生什么误解的,但结果却出乎意料,产生误解的人不在少 数。罪魁祸首又是那些害人的教材。在这些教材中介绍typedef的时候通常会写出如下形式: typedef int PARA; 这种形式跟#define int PARA几乎一样,如前面几章所述,这些教材的宗旨是由浅入深,但实际做出来的行为却是以转载 2010-05-27 21:25:00 · 723 阅读 · 0 评论 -
九宫格 数独 求解 算法 栈实现
/*我花了3个小时解决了这个问题!激动呀!这是我对朋友们的挑战!因为他们说这个问题根本就没办法解决!这是手机上的一个游戏《数字九宫格》英文名字叫“Sudoku”,估计大家都玩过!这个游戏对智力是个很大的挑战!我很想在两分总之内就能把格子全填上,但是我的脑袋却没有那样的智商,只好写个程序让电脑帮帮我了!(*^__^*) 嘻嘻…… 程序的思路就是栈,核心算法是最后的原创 2010-05-27 21:31:00 · 2057 阅读 · 1 评论 -
volatile 的理解
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: 1). 并行设备的硬件寄存器(如:状态寄存器) 2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic原创 2010-05-27 23:08:00 · 695 阅读 · 0 评论 -
数组名是什么 数组名揭秘
现在到揭露数组名本质的时候了,先给出三个结论: (1)数组名的内涵在于其指代实体是一种数据结构,这种数据结构就是数组; (2)数组名的外延在于其可以转换为指向其指代实体的指针,而且是一个指针常量; (3)指向数组的指针则是另外一种变量类型(在WIN32平台下,长度为4),仅仅意味着数组的存放地址! 1、数组名指代一种数据结构:数组 现在可以解释为什么第1转载 2010-05-27 23:09:00 · 3696 阅读 · 0 评论 -
最简单的智能指针实现方法
本文载自网络,其正确性还未验证!!! 需求 如果经常面对以下步骤:CMyObject* pObj = new CMyObject; //指向单个变量的指针pObj->DoSomething();delete pObj;pObj = NULL; 或者long* pList = new long[nCount]; 指向变量数组的指针GetList(pLi转载 2010-05-27 23:10:00 · 843 阅读 · 0 评论 -
关于static
问题1:什么是static?static有什么用途? 静态变量(以static作为修饰符的变量)分为两种:全局静态变量和局部静态变量。全局静态变量是在所有函数之外定义的静态变量,局部静态变量是在某个函数内(如mian函数)定义的静态变量。静态变量存储在内存的静态存储区,静态存储区在程序的整个运行期间都存在。未经初始化的静态变量会被程序自动初始化为0(然而,自动变量的值如转载 2010-05-27 23:11:00 · 687 阅读 · 0 评论 -
返回值为函数指针的函数
一个函数的返回值可以是一个指向函数的指针,下面是一个例子#include int get_big(int i,int j){ return i>=j?i:j;}int (*f(int a))(int,int) //f(int a)是一个函数,这个函数的返回值是一个{ //指向原创 2010-05-27 23:13:00 · 4402 阅读 · 3 评论 -
重载、覆盖、多态与函数隐藏(1)
要弄清楚重载、覆盖、多态与函数隐藏之间的复杂且微妙关系之前,我们首先要来回顾一下重载覆盖等基本概念。首先,我们来看一个非常简单的例子,理解一下什么叫函数隐藏hide。#include using namespace std;class Base{public: void fun() { cout << "Base::fun()" };class转载 2010-05-27 23:14:00 · 772 阅读 · 0 评论 -
重载、覆盖、多态与函数隐藏(2)
好了,我们先来一个小小的总结重载与覆盖两者之间的特征重载overload的特征:n 相同的范围(在同一个类中);n 函数名相同参数不同;n virtual 关键字可有可无。 覆盖override是指派生类函数覆盖基类函数,覆盖的特征是:n 不同的范围(分别位于派生类与基类);n转载 2010-05-27 23:15:00 · 913 阅读 · 0 评论 -
重载、覆盖、多态与函数隐藏(3)
例8-2#include using namespace std;class Base{public: virtual void fun(int i){ cout };class Derive : public Base{public: void fun(int i){ cout vo转载 2010-05-27 23:16:00 · 1123 阅读 · 0 评论 -
函数返回值类型
有没有发现,编译器根本不对函数头中的返回值类型进行检查?原创 2014-10-31 17:57:19 · 2003 阅读 · 0 评论