![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 70
宁静以致远_2020
这个作者很懒,什么都没留下…
展开
-
C++之四书五经(下)
我在上篇中“盘点”了TCPL和D&E以及入门教程、高效和健壮编程、模板和泛型编程等方面共十几本C++好书。冬去春来,让我们继续C++书籍精彩之旅。标准库当我还在研究院工作时,与同院另外两家研究所合作开发过一个大型水利枢纽调度集成项目。我们三家软件系统之间都要相互通信。在调试通讯模块时,细心的客户(一名好学的系统管理员)发现对于同一通信规约的解释代码,我的不超过30行,而对方的则超过了150转载 2007-01-24 23:12:00 · 596 阅读 · 0 评论 -
C++0x 概览
C++0x的工作已经进入了一个决定性的阶段。ISO C++委员会对C++0x的目标是使其成为“C++09”。这意味着我们要在2008年完成这个标准以便被ISO成员国批准。最后提交的标准设施将选自目前正被讨论的提案。为了按时完成此项工作,委员会已经停止审查新的提案并将精力集中于已经被讨论的那些提案上。 本文简要描述了C++0x标准化工作的指导原则,展示了一些可能的语言扩展例子,并列出了一些被转载 2007-07-28 23:25:00 · 771 阅读 · 0 评论 -
内存调试技巧
C 和 C++ 程序中的内存错误非常有害:它们很常见,并且可能导致严重的后果。来自计算机应急响应小组(请参见参考资料)和供应商的许多最严重的安全公告都是由简单的内存错误造成的。自从 70 年代末期以来,C 程序员就一直讨论此类错误,但其影响在 2007 年仍然很大。更糟的是,如果按我的思路考虑,当今的许多 C 和 C++ 程序员可能都会认为内存错误是不可控制而又神秘的顽症,它们只能纠正,无法预防。转载 2007-08-01 22:15:00 · 569 阅读 · 0 评论 -
Visual Studio 2005 IDE 技巧和窍门
James LauMicrosoft 项目经理将双手保持在键盘上我最喜欢使用的键盘快捷方式您可曾有过这样的期望:在 Visual Studio 内部进行开发工作时双手不必离开键盘?如果您是一名高级用户,您肯定会享受到使用键盘快捷方式执行各种操作所带给您的飞速体验。我确信大部分开发人员都已经熟悉了其中的某些快捷方式。使用 F5 执行 Debug.Start、F10 执行 Debug.转载 2007-08-07 22:53:00 · 566 阅读 · 0 评论 -
C++库大汇
基础类1、 Dinkumware C++ Library 参考站点:http://www.dinkumware.comP.J. Plauger编写的高品质的标准库。P.J. Plauger博士是Dr. Dobbs程序设计杰出奖的获得者。其编写的库长期被Microsoft采用,并且最近Borland也取得了其OEM的license,在其C/C+ +的产品中采用Dinkumware的库。转载 2007-08-10 12:10:00 · 556 阅读 · 0 评论 -
再谈构造函数
很多国内的C++图书中,关于构造函数的说明,没有真正说清楚构造函数的作用。有很多C++书这样说:“构造函数最重要的作用是创建对象”。其实这并没说清楚,创建一个对象要分为两步,第一步是对象的内存的分配,第二步是对象的初始化。而对象的内存分配是由编译器来完成的,对象的初始化才是由构造函数完成的。构造函数是给用户提供初始化类中成员变量的一种方式,在类对象有虚表的情况下,构造函数还对虚表进行初始化。转载 2007-08-18 12:14:00 · 465 阅读 · 0 评论 -
C/C++语言void及void指针深层探索
1.概述 许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误。本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧。 2.void的含义 void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。 void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一转载 2007-09-10 21:27:00 · 1090 阅读 · 0 评论 -
修练8年C++面向对象程序设计之体会
六年前,我刚热恋“面向对象”(Object-Oriented)时,一口气记住了近十个定义。六年后,我从几十万行程序中滚爬出来准备写点心得体会时,却无法解释什么是“面向对象”,就象说不清楚什么是数学那样。软件工程中的时髦术语“面向对象分析”和“面向对象设计”,通常是针对“需求分析”和“系统设计”环节的。“面向对象”有几大学派,就象如来佛、上帝和真主用各自的方式定义了这个世界,并留下一堆经书来解释转载 2007-09-09 21:49:00 · 979 阅读 · 2 评论 -
C++ 历史纪实
语言的发展是一个逐步递进的过程,C++ 是直接从 C 语言发展过来的,而 C 语言是从 B 语言发展过来的,B 语言是 BCPL 的一个解释性后代,BCPL 是 Basic CPL。其中最有趣的是 CPL 中 C 的由来,由于当时这个语言是剑桥大学和伦敦大学合作开发的,在伦敦的人员加入之前,C 表示剑桥,伦敦人员加入之后,C 表示 Combined 组合。还有一种非正式的说法,C 表示 Chr转载 2007-07-28 23:19:00 · 734 阅读 · 0 评论 -
为自己的类实现接口
类是C++中的主要单元,类包括行为方法和数据成员。我们经常会将数据成员置为private或protected属性,防止客户贸然闯入修改数据。但C++语法要求必须将数据成员和方法都放在一个类的定义中,这样就会将类的一些内部细节暴露给它的用户。使用接口类的好处是可以让用户只需要知道类具有哪些功能而不用管它的内部怎样实现的。再则,如果你写的类供别人使用,但又不希望使用者知道类的实现过程,就可以用接口类来转载 2007-07-17 23:57:00 · 2110 阅读 · 0 评论 -
C++之四书五经(上)
C++是一门广泛用于工业软件研发的大型语言。它自身的复杂性和解决现实问题的能力,使其极具学术研究价值和工业价值。和C语言一样,C++已经在许多重要的领域大获成功。然而,一个不可否认的现实是,在低阶程序设计领域,C++挤压着C同时也在承受着C的强烈反弹,而在高阶程序设计领域,Java和C#正在不断蚕食着C++的地盘。也许C++与C合为一体永远都是一个梦想,也许Java和C#的狂潮终将迫使C++回转载 2007-01-24 23:13:00 · 913 阅读 · 0 评论 -
大数阶乘
序大数阶乘的计算是一个有趣的话题,从中学生到大学教授,许多人都投入到这个问题的探索和研究之中,并发表了他们自己的研究成果。如果你用阶乘作关键字在google上搜索,会找到许多此类文章,另外,如果你使用google学术搜索,也能找到一些计算大数阶乘的学术论文。但这些文章和论文的深度有限,并没有给出一个高速的算法和程序。 我和许多对大数阶乘感兴趣的人一样,很早就开始编制大数阶乘的程序。从2转载 2007-06-25 00:02:00 · 19873 阅读 · 12 评论 -
如何让应用程序只运行一个实例
我们在使用《金山词霸》时发现,在《金山词霸》已经运行了的情况下,再次点击《金山词霸》的图标,那么它不会再运行另外一个《金山词霸》,而是将已有的《金山词霸》给激活,始终只能运行一个《金山词霸》的实例。在我们的程序当中如果要实现类似《金山词霸》的功能,就要解决两个问题,首先是要判断该程序已有一个实例在运行,其次是要将已运行的应用程序实例激活,同时退出第二个应用程序实例。对于第一个问题,我们可以转载 2007-03-31 13:02:00 · 1254 阅读 · 0 评论 -
如何在对话框程序中让对话框捕获WM_KEYDOWN消息
在对话框程序中,我们经常是利用对话框上的子控件进行命令响应来处理一些事件。如果我们想要让对话框(子控件的父窗口)类来响应我们的按键消息,我们可以通过ClassWizard对WM_KEYDOWN消息进行响应,当程序运行后,我们按下键盘上的按键,但对话框不会有任何的反应。这是因为在对话框程序中,某些特定的消息,例如按键消息,它们被Windows内部的对话框过程处理了(即在基类中完成了处理,有兴趣的读者转载 2007-03-31 13:05:00 · 683 阅读 · 1 评论 -
C++的多态性实现机制剖析
1. 多态性和虚函数我们先看一个例子:例1- 1#include iostream.h>class animal{public: void sleep() { coutendl; } void breathe() { cou转载 2007-03-31 13:13:00 · 611 阅读 · 0 评论 -
C /CLI
面对C /CLI,很多人的第一个问题自然是“什么是C /CLI”,我个人喜欢将其看作是位于静态程序设计和动态程序设计之间的一座桥梁。C /CLI这个名称本身就包含着一组术语——而其中最重要的术语却是最不明显的那一个。首先来看第一个术语“C ”,这当然指的是由Bjarne Stroustrup在Bell实验室时发明的C 编程语言。它所支持的是一种为代码执行速度和执行体所占空间转载 2007-04-04 21:18:00 · 1180 阅读 · 0 评论 -
C/C++ 常见误区
1. C++虽然主要是以C的基础发展起来的一门新语言,但她不是C的替代品,不是C的升级,C++和C是兄弟关系。没有谁比谁先进的说法,更重要的一点是C和C++各自的标准委员会是独立的,最新的C++标准是C++98,最新的C标准是C99。因此也没有先学C再说C++的说法,也不再(注意这个"不再")有C++语法是C语法的超集的说法。2. C++/CLI 和 C# 是微软的,它们与C和C++没有任何关系,转载 2007-04-04 18:28:00 · 826 阅读 · 0 评论 -
Windows下健壮的随机数发生器
在很多应用程序中,关于随机数的使用非常广泛而重要。比如:考试系统中的随机抽题,游戏程序中的随机发牌,数据加密和解密,计划安排的随机指定等等。一般地,产生随机数的函数,可以称为软件随机数发生器,简称随机数发生器。 1 线性适配随机发生器(函数) 在许多程序设计中,都简单地调用了相关的随机函数。比如windows下Microsoft Visual C++6.0 中的 rand(),在C转载 2007-09-17 12:28:00 · 3094 阅读 · 1 评论 -
堆内存和栈内存
堆:顺序随意栈:先进后出堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静转载 2007-10-01 13:33:00 · 587 阅读 · 0 评论 -
CString 操作指南
CString 是一种很有用的数据类型。它们很大程度上简化了MFC中的许多操作,使得MFC在做字符串操作的时候方便了很多。不管怎样,使用CString有很多特殊的技巧,特别是对于纯C背景下走出来的程序员来说有点难以学习。这篇文章就来讨论这些技巧。 使用CString可以让你对字符串的操作更加直截了当。这篇文章不是CString的完全手册,但囊括了大部分常见基本问题。这篇文章包括以下内容:转载 2008-01-08 18:13:00 · 482 阅读 · 0 评论 -
CString/string/char *之比较
(一) 概述string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C++标准之中;CString(typedef CStringT> CString)为Visual C++中最常用的字符串类,继承自CSimpleStringT类,主要应用在MFC和ATL编程中,主要数据类型有char(应用于ANSI),wchar_t(unicode),T转载 2008-01-08 18:18:00 · 3590 阅读 · 0 评论 -
格式化输出总结
int printf(const char *format,[argument]);format 参数输出的格式,定义格式为: %[flags][width][.perc] [F|N|h|l]type 规定数据输出方式,具体如下: 1.type 含义如下转载 2008-01-08 22:33:00 · 1220 阅读 · 0 评论 -
控制台窗口界面编程控制
摘要: 文本界面的控制台应用程序开发是深入学习C++、掌握交互系统的实现方法的最简单的一种手段。然而,Visual C++的C++专用库却没有TC所支持的文本(字符)屏幕控制函数,为此本系列文章从一般控制步骤、控制台窗口操作、文本(字符)控制、滚动和移动、光标、键盘和鼠标等几个方面讨论控制台窗口界面的编程控制方法。 在众多C++开发工具中,由于Microsoft本身的独特优势,选用Visual转载 2008-05-11 21:16:00 · 2332 阅读 · 0 评论 -
Windows系统提供的IP控件
Windows中有两个很重要的动态联结库:commctrl.dll和comctl32.dll,他们是Windows的自定义控制库(Windows Common Controls)。自定义控制库中包含了许多常用的Windows控件,如Statusbar,Coolbar,HotKey等;在C Builder中,这些控件大多数都已被包装成可视化控件了。在Microsoft推出Internet Explo转载 2008-05-18 22:20:00 · 1828 阅读 · 0 评论 -
正则表达式之道
什么是正则表达式一个正则表达式,就是用某种模式去匹配一类字符串的一个公式。很多人因为它们看上去比较古怪而且复杂所以不敢去使用——很不幸,这篇文章也不能够改变这一点,不过,经过一点点练习之后我就开始觉得这些复杂的表达式其实写起来还是相当简单的,而且,一旦你弄懂它们,你就能把数小时辛苦而且易错的文本处理工作压缩在几分钟(甚至几秒钟)内完成。正则表达式被各种文本编辑软件、类库(例如Rogue Wave的转载 2008-08-08 14:37:00 · 1055 阅读 · 0 评论 -
.NET 中的正则表达式
引言Microsoft®.NET Framework 对正则表达式的支持是一流的,甚至在 Microsoft® ASP.NET 中也有依赖正则表达式语言的控件。本文介绍了深入学习正则表达式的基础知识和推荐内容。本文主要面向对正则表达式知之甚少或没有使用经验,但却熟悉 ASP.NET、可借助 .NET 编程的初学者。此外,希望本文连同 regular expression cheat sheet 成转载 2008-08-08 14:42:00 · 1161 阅读 · 0 评论 -
常用数据类型的使用与转换
刚接触VC编程的朋友往往对许多数据类型的转换感到迷惑不解,本文将介绍一些常用数据类型的使用。我们先定义一些常见类型变量借以说明int i = 100;long l = 2001;float f=300.2;double d=12345.119;char username[]="程佩君";char temp[200];char *buf;CString str;_variant_t v1;_bs转载 2008-01-08 17:53:00 · 468 阅读 · 0 评论 -
常用VC插件
1.Visual Assist(强烈推荐) http://www.wholetomato.com/ VA从5.0一直到现在的VAX,功能越来越强大,除了以前版本中的自动识别各种关键字,系统函数,成员变量,自动给出输入提示,自动更正大小写错误,自动标示错误等等以外,最新的版本中还在WorkSpace窗口中加入一个VA View,可以更方便的查找工程中的文件、类和变量。vc6 的专家系统转载 2008-01-06 16:30:00 · 9688 阅读 · 2 评论 -
VC Studio 使用技巧
1.检测程序中的括号是否匹配 把光标移动到需要检测的括号(如大括号{}、方括号[]、圆括号()和尖括号“Ctrl+]”。如果括号匹配正确,光标就跳到匹配的括号处,否则光标不移动,并且机箱喇叭还会发出一声警告声。 2.查看一个宏(或变量、函数)的宏定义 把光标移动到你想知道的一个宏上,就比如说最常见的DECLARE_MAP_MESSAGE上按一下F12(或右键菜单中的Go To Defition转载 2008-01-21 22:46:00 · 791 阅读 · 0 评论 -
调试方法和技巧
便于调试的代码风格: 不用全局变量 所有变量都要初始化,成员变量在构造函数中初始化 尽量使用const 详尽的注释 VC++编译选项: 总是使用/W4警告级别 在调试版本里总是使用/GZ编译选项,用来发现在Release版本中才有的错误 没有警告的编译:保证在编译后没有任何警告,但是在消除警告前转载 2008-01-21 22:53:00 · 1147 阅读 · 0 评论 -
VC++小知识总结
(1)当文档被修改时,如何在标题上加上标志*?重载CDocument类的虚函数virtual SetModifiedFlag:void CTest2Doc::SetModifiedFlag(BOOL bModified){ CString strTitle = GetTitle(); CString strDirtyFlag = " *"; // note space befo转载 2007-12-16 22:26:00 · 2786 阅读 · 0 评论 -
D语言
什么是 D 语言?D 是一种通用的系统和应用编程语言。它是比C++更高级的语言,同时还保持了生成高效代码以及直接访问操作系统API和硬件的能力。D 很适合于编写从中等规模到那些由团队合作完成、数百万行代码规模的各种程序。D 易于学习,为编程者提供了很多便利,并且适用各种野心勃勃的编译器优化技术。 D 不是脚本语言,也不是一种解释型语言。它不需要虚拟机、宗教、或者高于一切的哲学。它是给实际的转载 2007-12-21 22:37:00 · 803 阅读 · 0 评论 -
ACM
ACM(Association for Computing Machinery)国际计算机组织ACM 是一个国际科学教育计算机组织,它致力于发展在高 级艺术、最新科学、工程技术和应用领域中的信息技术。它强调在专业领域或在社会感兴趣的领 域中培养、发展开放式的信息交换,推动高级的专业技术和通用标准的发展。 1947年,即世界第一台电子数字计算机(ENIAC)问世的第二年,ACM即成为第一个,也一直是转载 2007-12-27 22:11:00 · 452 阅读 · 0 评论 -
简述C和C++的学习历程
总是被问到,如何学习C和C++才不茫然,才不是乱学,想了一下,这里给出一个总的回复。一家之言,欢迎拍砖哈。1、可以考虑先学习C.大多数时候,我们学习语言的目的,不是为了成为一个语言专家,而是希望成为一个解决问题的专家。做一个有用的程序员,做一个赚钱的程序员。我们的价值转载 2011-09-04 14:21:21 · 2580 阅读 · 1 评论 -
John Carmark密码
有人在Quake III的源代码里面发现这么一段用来求平方根的代码: /*================SquareRootFloat================*/ float SquareRootFloat(float number) { long i; float x, y; const float f = 1.5F; x = number * 0.5F转载 2007-03-19 20:12:00 · 1509 阅读 · 0 评论 -
大数阶乘
C++代码如下: #include #include #include using namespace std;typedef unsigned int Type;enum{ BASE_DATA = 10000, MAX_NUM = 100000 , MAX_SIZE = MAX_NUM+1000};struct MulOpt {Type data1;MulOpt(Type x):data1原创 2006-12-10 22:03:00 · 915 阅读 · 2 评论 -
杨辉三角
#include void main(void){ int yh[11][11]={0}; //存储 杨辉 三角中的数 int i,j; //给杨辉三角中的各行列上的数赋值 for(i=1; i { yh[i][1] = 1; //第一列的值都为1 yh[i][i] = 1; //对角线上的值也都为1 } for (i=2; i { for (j=2;j { yh原创 2006-08-14 12:18:00 · 720 阅读 · 2 评论 -
魔方阵
#include /*魔方阵排列规律(必须是奇数×奇数阵) (1)将1放在第一行中间一列 (2)从2开始直到n*n,各数依次按下列规则存放: 每一个数存放的行比前一个数行减一 列数加1 (3)如果上一数的行数为1,则下一个数行为n(最下一行) (4)当上一个数列为n是时,则一下数的列数应为1,行数减1 (5)如果按上面规则确定位置上已有数,或上一个数是第1行第n列时,则把下一个数放在上一个数的转载 2006-08-14 12:19:00 · 710 阅读 · 0 评论 -
C语言实现行列式和代数余子式
/*创建行列式(人工输入数据),输出该行列式和代数余子式,并输出其值*//*2006-1-7 梁见斌*/ #include #include #define N 3typedef struct node{ int data; //存储元素的值 int x; //存储元素的横坐标 int y; //存储元素的纵坐标 } array;int sum;转载 2006-08-14 14:57:00 · 3259 阅读 · 0 评论 -
万年历全集
程序可以实现如下三种功能:求某个日期对应的星期求某年某月有的天数 输出某年的日历.例如,打印2006年日历如下:-------------------------------------------------------------------------- 2006 年---------------------------------转载 2006-08-14 15:10:00 · 876 阅读 · 0 评论