A.C++语言
文章平均质量分 80
byhuang
这个作者很懒,什么都没留下…
展开
-
auto_ptr解析
auto_ptr是当前C++标准库中提供的一种智能指针,或许相对于boost库提供的一系列眼花缭乱的智能指针, 或许相对于Loki中那个无所不包的智能指针,这个不怎么智能的智能指针难免会黯然失色。诚然,auto_ptr有这样那样的不如人意,以至于程序员必须像使用”裸“指针那样非常小心的使用它才能保证不出错,以至于它甚至无法适用于同是标准库中的那么多的容器和一些算法,但即使如此,我们仍然不能否认原创 2006-12-14 21:16:00 · 796 阅读 · 0 评论 -
C++中的类型重定义
这几天工作时碰到一个C++的编译错误(我使用的是Visual C++ 7.0),说是有一个类重复定义,仔细想想我们的这个项目也是做了好几个Release了, 内部代码应该不会有这样的低级错误, 真把类型给重复定义了,检查结果正如我预料的一样。 就这样, 我左右没找到原因,被一个编译错误给卡在那里了。(在我的概念中, 程序错误的等级为:编译错误->链接错误->逻辑错误, 此错误属于最低级 )。这时我原创 2006-12-14 21:47:00 · 1029 阅读 · 0 评论 -
C++中实现.NET风格的委托
这几天在看C#的时候, 发现其委托这种机制非常的先进,因为自己工作中用的较多的是C++,于是便有了在C++中实现它的想法。先在网上搜了一下,便发现了这篇好文,个人觉得其实现是很“美”的,于是便翻译了过来。(欢迎批评指正)原文地址:.NET style delegates for VC++ 6 目录 引言 什么是委托? 正文翻译 2006-12-14 21:51:00 · 589 阅读 · 0 评论 -
一个真正的Singleton
对于单件模式, 我想大家应该都不陌生,它可以说是GOF23个设计模式中最简单,最常用的一个模式了。但看似简单的东西却不一定好用,我就在使用时遇到了一个问题。 1 一个简单的Singleton类我们先来看一个简单的单件类的定义:#includeclass Singleton{public:static Singleton& GetSingleton()原创 2006-12-14 21:42:00 · 634 阅读 · 0 评论 -
当在C++子类中重定义基类数据成员时
今天给新员工培训C++ OOP时, 讲了很多函数重定义的内容, 忽然下面提出一个关于数据成员重定义的问题,虽然不算很难,或者说比较基础,但我还真不清楚了。。。 class Base{public: int m_i;};class Derived: public Base{public: int m_i;}Derived oDerived;oDerived.m_i = 1;原创 2006-12-21 20:05:00 · 795 阅读 · 0 评论 -
用位运算实现求绝对值-有效避开if-else判断
一般情况下,如果要我们写一个求绝对值的函数,我们的实现很有可能会是这样:templateT abs_Normal(T tNum){ if(tNum > 0.0) return tNum; else return -tNum;}也就是说我们会用到一个if-else判断来决定是否反转符号位。在3D游戏软件,或一些对性能要求比较原创 2006-12-21 20:12:00 · 1331 阅读 · 0 评论 -
do...while(0)的妙用
在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。 但是,最近在读我们项目的代码时,却发现了do...while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码的健壮性。1. do...while(0)消除goto语句。通常,如果在一个原创 2007-02-08 22:20:00 · 1507 阅读 · 0 评论 -
经典排序算法的C++ template封装
这几天在网上看到有人总结了4种比较常见简单的排序的算法,并用C#实现了出来。看了之后不由的想起了大学时候学>的情景, 忍不住用C++实现了一遍,除了冒泡排序, 选择排序, 插入排序,希尔排序之外, 还包括了算法复杂度较好的快速排序与堆排序。 然后用C++强大的模板功能实现了一个基于policy的Sort函数, 很明显,这个Sort函数是以排序算法为policy的。 这里利用了不同的模板技术实作出多原创 2007-01-04 22:51:00 · 1507 阅读 · 1 评论