C/C++
文章平均质量分 60
cglover
这个作者很懒,什么都没留下…
展开
-
控制台窗口界面控制设计
摘要: 文本界面的控制台应用程序开发是深入学习C++、掌握交互系统的实现方法的最简单的一种手段。然而,Visual C++的C++专用库却没有TC所支持的文本(字符)屏幕控制函数,为此本系列文章从一般控制步骤、控制台窗口操作、文本(字符)控制、滚动和移动、光标、键盘和鼠标等几个方面讨论控制台窗口界面的编程控制方法。 在众多C++开发工具中,由于Microsoft本身的独特优势,选用Visual转载 2007-06-22 08:54:00 · 2052 阅读 · 1 评论 -
操作符重载手册
一、重载规则I.可以重载的操作符 + - * / % ^ & | ~转载 2007-06-10 16:45:00 · 653 阅读 · 0 评论 -
register,auto和staic,extern
registerl 用register声明的变量称着寄存器变量,在可能的情况下会直接存放在机器的寄存器中;但对32位编译器不起作用,当global optimizations(全局优化)开的时候,它会做出选择是否放在自己的寄存器中;不过其它与register关键字有关的其它符号都对32位编译器有效。autol 它是存储类型标识符,表明变量(自动)具原创 2007-06-11 09:58:00 · 683 阅读 · 0 评论 -
c++中的explicit关键字
c++中的explicit关键字 c++中的explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,既然有"显式"那么必然就有"隐式",那么什么是显示而什么又是隐式的呢?如果c++类的构造函数有一个参数,那么在编译的时候就会有一个缺省的转换操作:将该构造函数对应数据类型的数据转换为该类对象,如转载 2007-06-10 16:13:00 · 624 阅读 · 0 评论 -
C++的auto_ptr
auto_ptr所做的事情,就是动态分配对象以及当对象不再需要时自动执行清理。它的源代码:namespace std{ templateclass T> class auto_ptr { private: T* ap; public: // constructor & destructor ----------------------------------- (1) exp原创 2007-06-10 16:20:00 · 1411 阅读 · 0 评论 -
函数声明后面 加上 throw()
比如:virtual double distance( Distance, Individual* ) throw ( NilException )=0; virtual bool equals( Individual* ) throw ( NilException ); double ge原创 2007-06-10 16:36:00 · 860 阅读 · 0 评论 -
volatile关键字有什么用?
volatile一个变量经volatile修饰后在所有线程中必须是同步的;任何线程中改变了它的值,所有其他线程立即获取到了相同的值。理所当然的,volatile修饰的变量存取时比一般变量消耗的资源要多一点l 限定一个对象可被外部进程(操作系统、硬件或并发线程等)改变,声明时的语法如下:int volatile nVint; 这样的声明是不能达到最高转载 2007-06-10 19:45:00 · 1044 阅读 · 0 评论 -
volatile —多线程程序员的最好朋友
function StorePage(){d=document;t=d.selection?(d.selection.type!=None?d.selection.createRange().text:):(d.getSelection?d.getSelection():);void(keyit=window.open(http://www.365key.com/storeit转载 2007-06-10 19:48:00 · 1149 阅读 · 1 评论 -
关于内存对齐的理解
有一下几个结构struct s1{-------------------- char c;char c2;short sh;----------------------int i;};struct s2{ char c; short sh;---------------------- int i;---------------------- char c2;};(假设原创 2007-11-01 12:33:00 · 646 阅读 · 0 评论 -
Windows API一日一练(21)SetWindowLongPtr和GetWindowLongPtr函数
在软件开发里,大家一直对着这个问题是执着的,那是“复用”。总想自己写出来的代码,可以适应性很强,到那里都可以落地生根。因此,面向对象的语言就层出不穷,每个都坚称可以最大地复用代码。在面向对象里,C++是非常强大的。下面就来用C++把上面介绍的程序封装起来,这样可以复用,或者说条理更加清晰。#001 #002 int APIENTRY _tWinMain(HINSTANCE hInstanc转载 2007-11-18 08:21:00 · 787 阅读 · 0 评论 -
详细解析C语言中的sizeof
一、sizeof的概念 sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。 二、sizeof的使用方法 1、用于数据类型 sizeof使用形式:sizeof(type)数据类型必须用括号括住。如s转载 2007-06-01 17:18:00 · 704 阅读 · 0 评论 -
控制台句柄
控制台程序通过句柄访问控制台的输入缓冲区及屏幕缓冲区。程序可以通过GetStdHandle, CreateFile, 或者 CreateConsoleScreenBuffer 函数打开所需的句柄。 GetStdHandle 函数提供了获取该程序所关联的标准输入(STDIN)、标准输出(STDOUT)及标准错误(STDERR)的句柄的机制,控制台创建时,系统创建了这些句柄。开始,STDIN是控转载 2007-06-01 15:52:00 · 1254 阅读 · 0 评论 -
c++文件io完全手册
大多数 C++ 程序员都熟悉不止一个文件 I/O 库。首先是传统的 Unix 风格的库,它由一些低级函数如 read() 和 open()组成。其次是 ANSI C 的 库,它包含 fopen() 和 fread()等函数。其它的还有一些具备所有权的库或框架,比如 MFC,它有很多自己的文件处理类。 这些库一般都很难跨平台使用。更糟的是,上述提到的 C 库由于其程序接口的原因,在很大程度上强制转载 2007-06-24 16:33:00 · 2351 阅读 · 0 评论 -
如何改变Win32 Console 程序显示颜色?
#include #include using namespace std; void SetColor(unsigned short ForeColor=0,unsigned short BackGroundColor=0) { HANDLE hCon=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hCon,ForeColor|原创 2007-05-20 18:38:00 · 597 阅读 · 0 评论 -
如何改变Win32 Console 程序显示颜色
include #include using namespace std; void SetColor(unsigned short ForeColor=0,unsigned short BackGroundColor=0) { HANDLE hCon=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hCon,ForeColor|原创 2007-05-20 18:04:00 · 676 阅读 · 0 评论 -
mutable与const修饰词的对称性
mutable与const修饰词的对称性 smilemac 恐怕没有程序员会反对在该使用const的地方使用const,但大部分程序员却非常反对使用mutable,所以也很少注意mutable与const的对称性。我们知道,const是一种语义与语法统一得非常好的修饰词,这在C++中其实并不多见,C++很多语法概念在语义上是模糊不清的,但const却是一个异数。const承诺的是一旦某转载 2007-05-21 16:41:00 · 503 阅读 · 0 评论 -
用class xxx;和inclue “*.h”差别
#ifndef TIMESOURCEFACTORY_H#define TIMESOURCEFACTORY_Hclass ITimeSource;class CTimeSourceFactory{public: 。。。 static ITimeSource *CreateTimeSource(ETimeSourceType type);};#endif//编译通过#ifnd原创 2007-05-21 21:11:00 · 628 阅读 · 0 评论 -
dll的输出函数使用__stdcall调用约定后,客户端用GetProcAddress出现的问题!
为了是用vc写的dll能被其它语言的写的程序使用,即实现跨语言。我们在dll的函数调用约定中使用__stdcall .但当用GetProcAddress调用是却失败了.例如:extern "C" ITimeSource* __stdcall CreateTimeSource(ETimeSourceType type)typedef ITimeSource *( __stdcall原创 2007-05-23 00:37:00 · 3491 阅读 · 0 评论 -
不用工具查看dll的导出函数名的方法!
用记事本打开dll文件,用dll的文件名(如:mydll.dll)查找,文件名后面就是dll的导出函数名了。原创 2007-05-23 00:12:00 · 6086 阅读 · 0 评论 -
求取结构体成员偏移量的宏定义
stddef.h中有如下宏:#ifdef _WIN64#define offsetof(s,m) (size_t)( (ptrdiff_t)&( ( (s *)0 )->m ) )#else#define offsetof(s,m) (size_t)&( ( (s *) 0 )->m )#endif解释:宏里面的 & 取的成员地址是相对与 s 的相对地址原创 2007-05-25 20:33:00 · 1371 阅读 · 0 评论 -
解析#pragma指令
在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。 其格式一般为: #Pragma Para 其中Para 为参数,原创 2007-06-02 08:50:00 · 800 阅读 · 0 评论 -
平时使用VS2003总结的一些笔记
VS2003 IDE 笔记我在安装Microsoft Visual Studio.Net的时候,总是出现这样的提示:“安装程序检测到另一个程序要求计算机重新启动。必须重新启动计算机后才能安装Visual Studio.Net系统必备。系统重新启动后,您需要重新启动安装程序。单击“确定”重新启动。单击“取消”退出安装程序,以后再安装。”然后我就单击“确定”重新启动电脑,待系统启动完毕后,重新启动原创 2008-01-08 14:38:00 · 2964 阅读 · 0 评论