C/C++
文章平均质量分 67
billdavid
这个作者很懒,什么都没留下…
展开
-
关于虚拟继承的思考
虚拟继承在一般的应用中很少用到,所以也往往被忽视,这也主要是因为在C++中,多重继承是不推荐的,而一旦离开了多重继承,虚拟继承就完全失去了存在的必要(因为这样只会降低效率和占用更多的空间,实在是一无是处)。以下面的一个例子为例:#include #include class CA{ int k; //为了便于说明后面的内存结构特别添加public: void f() {cout "C原创 2004-06-23 18:52:00 · 3458 阅读 · 6 评论 -
记boost应用中的几个有用的宏
BOOST_ALL_DYN_LINK 动态链接boost,而不是默认的静态链接。BOOST_LIB_DIAGNOSTIC 输出链接boost库的信息,便于开发者确认是否链接与期望的一致,且到底是哪个文件用到了相应的boost库。此外,在$BOOST_DIR/boost/config/auto_link.hpp及$BOOST_DIR/boost/config/user.hpp中还提到了很原创 2009-02-13 13:13:00 · 3017 阅读 · 0 评论 -
boost::thread简要分析(3):线程局部存储及其它
多线程编程中还有一个重要的概念:Thread Local Store(TLS,线程局部存储),在boost中,TLS也被称作TSS,Thread Specific Storage。boost::thread库为我们提供了一个接口简单的TLS的面向对象的封装,以下是tss类的接口定义:class tss{public: tss(boost::function1void, void*>* pcl原创 2005-05-27 08:52:00 · 2554 阅读 · 0 评论 -
boost::thread简要分析(1):thread
昨天在写作“大卫的Design Patterns学习笔记”过程中,编写了一个多线程Producer-Consumer的示例,其中用到了boost::thread,但在线程同步的问题上遇到了些问题,到csdn和vckbase上发帖子问了一下,也没人回答,没有办法,只好晚上回家搬出源码研究了一下,总算解决了问题,下面将自己的理解写下来,与大家分享、讨论。注:以下讨论基于boost1.32.0。boos原创 2005-05-27 08:47:00 · 4654 阅读 · 0 评论 -
boost::thread简要分析(2):线程同步
除了thread,boost::thread另一个重要组成部分是mutex,以及工作在mutex上的boost::mutex::scoped_lock、condition和barrier,这些都是为实现线程同步提供的。mutexboost提供的mutex有6种:boost::mutexboost::try_mutexboost::timed_mutexboost::recursive_mutexb原创 2005-05-27 08:50:00 · 3884 阅读 · 0 评论 -
GDI+编程中的一条错误信息及其原因分析
公司不让用盗版,遂准备逐一将各软件要么换成开源的,要么就自己写,看了看,就数Acdsee最简单了(有些高级功能根本用不着),行,从这个入手吧。需求分析:基本的图片查看功能,图片格式转换功能,基本的图形变换功能。技术可行性分析:MS提供的GDI+已经提供了比较专业的图形显示、格式转换功能,而且简单易用。....OK,就绪,开始干吧。但是在程序编写的过程中,有条错误信息让我很不解。程序中有如下语句:b原创 2005-03-25 17:05:00 · 1525 阅读 · 0 评论 -
编译、安装boost(on Windows and Solaris)
大卫注:这是当初研究boost时的笔记,最近看到论坛上有人问,所以就贴出来共享一下。其实个人认为,boost目前还不适于进行应用开发,毕竟boost库太大了(当然,你可以只用一部分,但程序的可维护性始终是个问题),除非你想一探C++研究前沿的Meta Programming这个Generic Programming的神奇世界。强烈建议boost的研究者在研究boost之前研究一下一个小得多的模板库原创 2005-03-07 10:58:00 · 7230 阅读 · 0 评论 -
免费的C++ IDE: Visual C++ 2005 Express
MS即将发布的Visual Studio 2005在04年6月发布了一个stable的beta版本供大家免费测试,官方下载地址如下:http://lab.msdn.microsoft.com/vs2005/下载前需填写一个online form,你也可以从以下网址中找到直接下载链接,但我没有验证过是否这是一个较早的版本:http://blog.joycode.com/uestc95/archive原创 2005-03-06 16:16:00 · 8590 阅读 · 1 评论 -
对union的进一步认识与一些深层应用
虽然平时在程序开发时较少使用union,虽然当初学C语言时,union一章被老师略过没有介绍,虽然,自认为自己对union的认识已经足够,但是,在写完上一篇文章大卫的阅读笔记)C++中使用union的几点思考>之后,网上的讨论驱使我对这一基本的语言特性又投入了一些精力去关注,并写成了此文.下面以MSDN中关于union的概述作为开头,这好像有些无聊,不过,有时候看specification的东西可原创 2004-11-26 19:01:00 · 6157 阅读 · 2 评论 -
(大卫的阅读笔记)C++中使用union的几点思考
大卫注:这段时间整理旧资料,看到一些文章,虽然讲的都是些小问题,不大可能用到,但也算是一个知识点,特整理出来与大家共享.与此相关的那篇文章的作者的有些理解是错误的,我写此文,也是纠正为了作者的一些错误认识.当然,如果我的理解有任何错误,也恳请大家批评指正.C++虽说被B.S.称作一门新语言,但它毕竟与C有着千丝万缕的联系,虽然B.S.一再坚持,但我还是愿意把C++看作是C ++.我们应该按照C中的原创 2004-11-11 20:10:00 · 2419 阅读 · 1 评论 -
(大卫的阅读笔记)关于对象的construct与destruct
大卫注:今天整理Computer上的旧资料,偶然发现了两篇不知什么时候从网上下来的文章,谈的是关于对象construct与destruct的问题,感觉作者讲的不是太清楚,按其思想进行改写后发布于此.对象的construct与destruct是C++中一个最基本的概念,虽然简单,但其中有些特性也值得我们去关注,以便更好地加以利用,写出有效而且高效的代码.先看一个程序,程序很简单,只是添加了一些输出信原创 2004-11-10 22:28:00 · 1884 阅读 · 0 评论 -
关于const reference的几点说明
几天前,在程序中遇到一个问题,当我检查程序错误时,在STL实现中发现了类似下面的代码:#include using namespace std;class A{public: A(const string& s) { cout s.c_str() endl; }};int main(){ const char* psz = "abc"; A a(ps原创 2004-11-10 21:14:00 · 2404 阅读 · 0 评论 -
Traits技术初探
概述:traits是一种特性萃取技术,它在Generic Programming中被广泛运用,常常被用于使不同的类型可以用于相同的操作,或者针对不同类型提供不同的实现.traits在实现过程中往往需要用到以下三种C++的基本特性:enumtypedeftemplate (partial) specialization其中:enum用于将在不同类型间变化的标示统一成一个,它在C++中常常被用于在类中原创 2004-11-02 17:55:00 · 3612 阅读 · 4 评论 -
(大卫的阅读笔记)More Effective C++ Item 附2:一个auto_ptr的实现实例
Davids Note: I am not a good writer, and to write a fully new article is a little hard for me. But writing some remark on good articles may be also helpful for others and easier to me. So, from now o原创 2004-10-26 18:26:00 · 2285 阅读 · 2 评论 -
对几组sizeof信息的分析
对于很多C++新手而言,对象或变量的sizeof信息总是让人捉摸不透,以下程序列举了几组典型的sizeof信息,希望能解答大家在使用sizeof时的疑问。在列举这几个例子前需要说明以下几点:1、在Win32平台上,指针长度都是4字节,char*、int*、double*如此,vbptr(virtual base table pointer)、vfptr(virtual function table原创 2004-06-23 18:54:00 · 1757 阅读 · 3 评论 -
"对几组sizeof信息的分析"一文补充
实例1:C++ Reference对sizeof运算符的描述信息如下:The sizeof operator is a compile-time operator that returns the size, in bytes, of the argument passed to it.也就是说sizeof的输出信息是在编译期间确定的,同时,没有限定编译器对传递给sizeof的表达式具体作何种处理原创 2004-07-09 18:39:00 · 1443 阅读 · 1 评论 -
记几个C++程序Memory Leak检查工具
个人用过的最好用的:· BoundsChecker商业软件,可惜似乎已经停止开发了(见http://blogs.msdn.com/matt_pietrek/archive/2007/06/11/r-i-p-numega-lab.aspx,但close lab似乎不一定意味着终止相关产品开发,但肯定会流失一些Experts/Master,而且其母公司现在的定位是一家IT服务公司,哎,多好的产品啊!可原创 2009-02-13 17:04:00 · 3362 阅读 · 0 评论