Lua的面向对象设计1

这几天看了Lua程序设计,读懂面向对象设计后,发现真的好巧妙.Lua本身没有支持面向对象的特性,如像C++,java有class等关键字,Lua的面向对象完全是基于其自身的特性来模拟设计的,读懂之后不得不叹服. Lua的面向对象特性是基于其表和元表的特性来完成的,下面举例说明 比如,我们要设计一个账户类,包含存钱(deposit())取钱(withdraw())的方法,还有余额(bal...
阅读(101) 评论(0)

typename的起源与用法

typename的起源与用法 侯捷在Effective C++的中文版译序中提到: C++的难学,还在于它提供了四种不同(但相辅相成)的程序设计思维模式:procedural-based, object-based, object-oriented, generics 对于较少使用最后一种泛型编程的我来说,程序设计基本上停留在前三种思维模式当中。虽说不得窥见高深又现代...
阅读(171) 评论(0)

linux中fork--子进程是从哪里开始运行

fork调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值:     1)在父进程中,fork返回新创建子进程的进程ID;     2)在子进程中,fork返回0;     3)如果出现错误,fork返回一个负值; 创建新进程成功后,系统中出现两个基本完全相同的进程,这两个进程执行没有固定的先后顺序,哪个进程先执行要看系统的进程调度策略。此时,两个进程都从...
阅读(128) 评论(0)

linux IO操作1

其中S_IFBLK是块设备文件,S_IFCHR是字符设备文件,S_IFIFO是命名管道 块设备文件和字符设备文件的区别是: Linux中I/O设备分为两类:字符设备和块设备。两种设备本身没有严格限制,但是,基于不同的功能进行了分类。(1)字符设备:提供连续的数据流,应用程序可以顺序读取,通常不支持随机存取。相反,此类设备支持按字节/字符来读写数据。举例来说,键盘、串口、调制解调器都是典型的...
阅读(57) 评论(0)

Linux下C语言的调试

调试是每个程序员都会面临的问题. 如何提高程序员的调试效率, 更好更快地定位程序中的问题从而加快程序开发的进度, 是大家共同面对的问题. 可能Windows用户顺口就会说出:用VC呗 :-) , 它提供了设置断点, 单步跟踪等的图形界面, 使调试起来直观易用. 但Linux用户可能要生闷气了 O:-) : 难道我们Linux程序员就只能使用原始的调试方法, 在代码中加入printf信息吗?难道...
阅读(44) 评论(0)

由linux命令行下命令参数前的一横(-)和两横(--)的区别而得知的

在解释这些区别之前我们先了解一下有关linux的背景知识,这个需要大家先认真看完就会对这些区别有更深入的了解,对linux也有更深的了解。 关于System V和BSD风格以及他们与Linux的关系: 1、System V 和BSD同出于AT&T实验室的两个不同的部门,SystemV是一个Unix的商业化标准,BSD为Unix标准化的Berkeley风格。 2、由于L...
阅读(64) 评论(0)

duilib鼠标键盘消息处理

一般的窗口没有处理鼠标键盘消息,而是直接返回让CPaintManagerUI去处理。(想知道duilib整体的消息处理过程,请参考本博客其他文章) 首先用自己的语言描述几个名词: 准事件控件m_pEventClick:在WM_LBUTTONDOWN,WM_RBUTTONDOWN,WM_LBUTTONDBLCLK消息中设置,在WM_LBUTTONUP,WM_CONTEXTMENU消息中置零。为什...
阅读(6227) 评论(0)

基于MFC的DirectUI程序的消息响应设计

所以消息的获取仍然是来自主窗口,也就是MFC自己的一套消息映射,比如鼠标点击的消息,在主窗口截获,然后通过相关的处理,调用虚子窗口(DirectUI程序中的控件一般不是真正的窗口,没有m_hwnd,暂且称它为虚子窗口吧)的响应函数。所以DirectUI主要的问题是如何将主窗口的消息分派给虚子窗口,要解决这个问题,第一步如何定位虚子窗口。     首先主窗口有很多控件,主窗口有个控件容器,在窗口初...
阅读(1455) 评论(0)

自绘窗口要处理的几个关键消息

要想绘制一个窗口,替换掉原始的标题栏,最大最小按钮等,要经过以下步骤: 一般窗口都有标准标题栏,最大最小按钮等。要想自绘标题栏,最大最小按钮,首先要将他们给去除掉,怎么样除掉呢? 1 可以定义窗口类型为没有边框的,这样系统就不会给窗口加上标题栏,按钮了。但是这种方式会导致一些问题,比方说窗口不能resize,不能移动,在任务栏不能最小化窗口等问题,当然可以在程序中处理这些问题,但显得麻烦了。 ...
阅读(1339) 评论(0)

C/C++结构体内存对齐

C/C++类/结构体内存遵循三个原则:      c++中结构跟类几乎相同,除了默认成员的访问控制不同。以下结构体的内存对齐在类class中也是一样的。 1) 结构体变量的首地址能够被其最宽基本类型成员的大小所整除; 2) 结构体每个成员相对于结构体首地址的偏移量(offset)都是成员自身大小的整数倍,如有需要编译器会在成员之间加上填充字节(internal adding...
阅读(397) 评论(0)

memcpy memmove区别和实现

memcpy与memmove的目的都是将N个字节的源内存地址的内容拷贝到目标内存地址中。 但当源内存和目标内存存在重叠时,memcpy会出现错误,而memmove能正确地实施拷贝,但这也增加了一点点开销。 memmove的处理措施: (1)当源内存的首地址等于目标内存的首地址时,不进行任何拷贝 (2)当源内存的首地址大于目标内存的首地址时,实行正向拷贝 (3)当源内存...
阅读(410) 评论(0)

static_cast, dynamic_cast, reinterpret_cast, const_cast区别比较

隐式转换(implicit conversion) short a=2000; int b; b=a; short是两字节,int是四字节,由short型转成int型是宽化转换(bit位数增多),编译器没有warning,如下图所示。宽化转换(如char到int,int到long long,int到float,float到double,int到double等)构成隐式转换,...
阅读(407) 评论(0)

tcp/udp建立连接并通信的过程

基于TCP的socket编程的服务器程序流程如下: 1.创建套接字 SOCKETsockSrv = socket(AF_INET, SOCK_STREAM, 0) ;   2.将套接字绑定到本地地址和端口上 SOCKADDR_INaddrSrv ;...
阅读(8209) 评论(0)

白话经典算法二叉堆排序之思想简介

常用的排序算法有冒泡排序,插入排序和选择排序。他们的时间复杂度是o(n²),与数据量的平方成正比。他们的效率还是比较低的。现在来说说他们的效率为什么比较低下。以冒泡排序为例,它每一轮都是与相邻的元素进行交换,交换的距离为1,每次每个(没有冒泡出来的)元素都要与前一个比较再交换。每次相邻的比较只能比较出两个元素的大小,不能以整个数组进行参照来确定在整个数组里的大小,也就是说每次的比较不能确定其他元素...
阅读(1278) 评论(0)

解析兼容DC与兼容位图

windows编程中老是遇到兼容DC与兼容位图,而我对他们的用法又不是很清晰,总觉得对只是一知半解非常不爽,今天索性将他们都好好研究一番。如有错误,还请指正批评,不甚感激! 首先讲怎么样在应用程序里显示一幅位图?     ① 可以利用StretchDIBits函数来显示。这个方法需要先从文件里加载一个位图文件,然后获取位图相关信息来显示,只涉及到一个设备上下文HDC,也就是要显示的那个HDC。...
阅读(2195) 评论(1)
40条 共3页1 2 3 下一页 尾页
    个人资料
    • 访问:47811次
    • 积分:786
    • 等级:
    • 排名:千里之外
    • 原创:27篇
    • 转载:13篇
    • 译文:0篇
    • 评论:1条
    最新评论