
C/C++
文章平均质量分 78
xieqidong
这个作者很懒,什么都没留下…
展开
-
C++智能指针与标记
C++智能指针与标记 引用计数指针是否能有效地回收,对系统意外关机之后数据的恢复来说至关重要,关键是要避免对象复制。 怎样从灾难性故障中,恢复一个长期运行、系统级的后台守护进程或者服务,在如今的软件设计过程中,已成为了一个重要的考虑因素。当这些软件是由C++语言编成,并使用了引用计数的智能指针时,那么,智能指针的有效回收,对系统是否具有可伸翻译 2008-04-04 08:46:00 · 1230 阅读 · 0 评论 -
用std::string取代char*
用std::string取代char* 本文主要针对那些有C语言背景知识,而现在开始使用C++语言编程的程序员。事实上,C++继承了大多数C语言的功能,但有些方面还是不得不要留意的,如new和delete取代了malloc和free,且C++还使用了STL容器类来静态或动态地分配数组。本文中要讲的是用std::string来取代char*,将会演示C风格数组带来的一系列问题,及如何使用std:翻译 2008-12-12 15:31:00 · 9155 阅读 · 1 评论 -
C++中的属性
C++中的属性 C#中有属性(Property),而C++中却没有,其实属性对于C++而言也是非常重要的,请往下看。 什么是属性 属性就像那些可以存储数据的变量,但在从它们中读写数据时会引发事件,换句话来说,属性就是一个有互作用的变量,自我更新,并在读写其自身时产生不同的值。 使用像C#这样包含属性的语言非常容易编写一个类,但对C++来说似乎就不太可能了,因为C++的编译器不支持C#那翻译 2008-11-10 09:10:00 · 12313 阅读 · 0 评论 -
C++中的运行时类型检查
C++中的运行时类型检查 简介 经常有人问到:“我怎样才能在运行时确定或检查C++中对象的类型呢?”,下面通过一个简单问题来作一演示。 以下程序会在第一次调用CFoo::AnimalSays 时显示“Bark!”,而第二次调用时显示“Miaou”。class Animal {/*...*/};class Dog : public Animal {/*...*/};class Cat :翻译 2008-11-05 10:51:00 · 4419 阅读 · 2 评论 -
SSE指令集
SSE和SSE2的指令系统非常相似,SSE2比SSE多的仅是少量的额外浮点处理功能、64位浮点数运算支持和64位整数运算支持。 SSE为什么会比传统的浮点运算更快呢?因为它使用了128位的存储单元,这对于32位的浮点数来讲,是可以存下4个的,也就是说,SSE中的所有计算都是一次性针对4个浮点数来完成的。 虽然SSE从理论上来讲要比传统的浮点运算会快,但翻译 2008-07-04 21:05:00 · 20020 阅读 · 0 评论 -
用Intel线程构建块进行安全、可伸缩性的并行编程
用Intel线程构建块进行安全、可伸缩性的并行编程 如果你也是今天众多编写多线程程序、利用多核计算平台的程序员之一,说不定你已经了解C++ STL中的容器类并不是线程友好的(即不太适用于多线程);如今,硬件行业的先行者Intel却提供了一款线程安全的C++模板库,来看看有没有你想要的吧。 多线程程序是出了名的难写、难测试、难调试翻译 2008-04-05 10:17:00 · 4668 阅读 · 0 评论 -
在C语言中以编程的方式获取函数名
在C语言中以编程的方式获取函数名 仅仅为了获取函数名,就在函数体中嵌入硬编码的字符串,这种方法单调乏味还易导致错误,不如看一下怎样使用新的C99特性,在程序运行时获取函数名吧。 对象反射库、调试工具及代码分析器,经常会需要在运行时访问函数的名称,直到不久前,唯一能完成此项任务并且可移植的方法,是手工在函数体内嵌入一个带有该函数名翻译 2008-04-05 10:10:00 · 3143 阅读 · 0 评论 -
用程序开关DVD/CD驱动器
用程序开关DVD/CD驱动器 在Windows资源浏览器中,可在DVD/CD光驱图标上单击鼠标右键,选择“弹出”来打开光驱仓门,你可能也发现了,菜单中并没有“关闭”命令来关闭光驱。下面,就让我们用程序来控制打开、关闭光驱。 程序的主要工作部分为CD_OpenClose(BOOL bOpen, TCHAR cDrive)函数:翻译 2008-04-04 23:09:00 · 1075 阅读 · 0 评论 -
C/C++回调函数之初探
C/C++回调函数之初探 简介 对于很多初学者来说,往往觉得回调函数很神秘,很想知道回调函数的工作原理。本文将要解释什么是回调函数、它们有什么好处、为什么要使用它们等等问题,在开始之前,假设你已经熟知了函数指针。 什么是回调函数? 简而言之,回调函数就是一个通过函数指针调用的函数。如果你把函数的翻译 2008-04-04 08:48:00 · 896 阅读 · 0 评论 -
C++中接口的实现
C++中接口的实现 简介 接口(Interface),作为一种比类更强大的语言特性,已出现在了Java、C#及其他语言中,但C++中却没有。本文中将要演示的,是一种C++接口概念“方法学”上的实现;且从Visual Studio.NET 2002开始,微软也以一种扩展的方法来走这同一条路,其允许编译器来实现接口中的大多数特性,当然了,C++翻译 2008-04-05 10:25:00 · 4531 阅读 · 0 评论 -
保持C/C++代码的可伸缩性
保持C/C++代码的可伸缩性 本文主要讲述如何通过减少占用虚拟内存,来提高程序的性能。 在今天,已有许多的32位应用程序感到,在32位平台上,可用的虚拟内存受到了一定的限制,对程序开发者来说,即使是开始关注64位平台时,也不得不维护软件的32位版本,这就需要一种方法,以使代码的两个版本都保持相当的可伸缩性。 目前的内存剖析工具能帮助确定,翻译 2008-04-04 23:07:00 · 833 阅读 · 0 评论 -
浮点数的格式化显示
浮点数的格式化显示 在许多应用程序领域中,都需要控制小数点后的小数位,但是浮点数对此不能提供直接的支持。怎样对程序中的浮点数据进行“整齐”地格式化呢?在此我们有一个迂回的方法,先把它们转换为字符串,格式化后以文本形式显示出来。 在日常编程中——包括对话框、关系数据库、金融程序、SMS程序及一切处理数据文件的程序,需要控制小翻译 2008-04-04 23:05:00 · 3814 阅读 · 0 评论 -
在C/C++算法设计中使用任意位宽
在C/C++算法设计中使用任意位宽 开发定点(fixed-point)算法时,通常需要在设计功能性、数字精度建模、及验证(仿真)速度之间取得一个平衡。现在,一种新的数据类可使此过程简单化,由此得到更简单精确的建模精度、更好的数字求精、及更快的验证周期,而ANSI C/C++正是开发这种数字求精算法的最佳语言。 某此算法天生就适用于操作整数,翻译 2008-04-05 10:22:00 · 2066 阅读 · 0 评论 -
在C++程序中添加逻辑流程控制
在C++程序中添加逻辑流程控制 问题的引出 在计算机程序中,除了常见的执行流程控制,还有逻辑流程控制;有时,执行流程即为逻辑流程,但在大多数情况下还是有所区别的,例如,假定有一个Web服务器使用同步套接字读取HTTP请求,那么会编写如下的代码: void read(HTTP_REQUEST& http_request) {翻译 2008-04-04 08:41:00 · 895 阅读 · 0 评论 -
用C为密集运算函数加速
用C为密集运算函数加速密集运算函数的优化 ——在应用程序中集成可编程逻辑 今天的电子设备,不管是嵌入、工业、消费、娱乐,还是通讯电子设备,它们中的应用程序,都比过去需要在更短的时间内处理更多的数据。一般来说,开发者通常会选用某种通用型处理器或数字信号处理器(DSP),对那些适应性为先的应用程序来说,通用型处理器一直都是最佳的架构选择,而同时DSP也是用于提高运翻译 2008-04-03 08:42:00 · 1866 阅读 · 0 评论 -
使用C++异常来取代exit()函数
使用C++异常来取代exit()函数 从C语言开始接触C++的人,恐怕都知道exit()这个函数,似乎现在很多的程序员都有这样一种习惯,在程序一遇到错误、或任务刚完成时,把调用exit()函数当成是一种最好的结束程序的方法。在以前遗留的许多老式C/C++代码中,这种现象非常普遍,但当手头的软件项目逐步进展并越来越大时,就不得不面临合并以前分散的各个模块这项工作翻译 2008-04-05 10:24:00 · 1908 阅读 · 0 评论 -
实现可配置的内存分配算符
实现可配置的内存分配算符——对内存管理的精雕细琢 应用程序分配内存的方法,对程序的执行性能有着深刻的影响。目前,通用的内存分配方法本质上已非常高效,但仍有改进的空间。 内存分配,不可一层不变 今天,对绝大多数程序来说,通用的内存分配方法——此处指代分配算符(Allocator:即malloc或new翻译 2008-04-05 10:09:00 · 822 阅读 · 0 评论 -
C++数据类型的属性与限制
C++数据类型的属性与限制 在C++中,每一种内置的数据类型都拥有不同的属性,其中包含的信息对设计程序来说是非常重要的,下面来看一下,库是怎样有助于访问这些信息的。 C++中约有10种截然不同的整数类型及超过3种的浮点类型,而每种数据类型都有不同的数值属性,如数值范围、能表示的最大位数、或各自的精度等等,这些属性对金融、科学、图形、翻译 2008-04-04 23:03:00 · 1179 阅读 · 0 评论 -
创建一个C++线程类:C++中独立于平台的线程
创建一个C++线程类:C++中独立于平台的线程 简介 最近,有人问到,是否有一种简单的方法创建一个C++类,以便有助于编写面向对象的线程,而且这个线程类还要有以下属性:支持事件驱动及基于间隔的异步线程。支持生成同种及特定的线程。提供一个FCFS(先来先服务)的堆栈队列用于发送及处理多任务。可移植。易于实现。 为支持新类CThread,还需要编写出其他相关的类,这些类包括:CMut翻译 2009-04-28 11:04:00 · 16154 阅读 · 3 评论