- 博客(9)
- 资源 (12)
- 收藏
- 关注
原创 我的C++实践(6):模板与继承相结合的威力
模板表示类的集合,让模板继承一个类与面向对象编程中的继承并没有本质的差别。但是在模板中使用继承有一些特别的地方,比如基类可以依赖于模板参数(例如继承B,这称为依赖型基类)、甚至模板参数直接可以作为基类,这些所谓的参数化继承,再结合多重继承等C++中特有的继承机制,我们可以发挥模板和继承各自的优势,产生出很多的有趣的技术。 1、命名模板参数。C++中当多个模板参数有缺省实参时,
2009-08-31 15:56:00 3320 1
原创 参加CSDN上海英雄会的感受
这是我第一次参加CSDN的软件技术英雄会(8月29日),感受颇多。现场人还是蛮多的,也非常热闹。参加大会的既有业界资深的架构师、项目经理和CTO,也有新兴的创业者。我就自己的感受,对各位高手的演讲作一下点评吧,有班门弄斧之嫌,不管了。 (1)CSDN蒋总的致辞。还不错,对业界趋势的把握还是比较到位的,不愧是我们的蒋老大啊!对几个成功案例的讲解我映像比较深。在IT同行的交流中,我最
2009-08-31 14:35:00 2234 2
原创 我的C++实践(5):类型萃取技术
C++模板中的类型参数T是抽象的,我们并不能在模板内部直接获得它的具体特征。类型萃取(抽取)技术就是要抽取类型的一些具体特征(trait),比如它是哪种具体类型,它是引用类型,内建类型,还是类类型等。可见,类型萃取技术其实就是trait模板技术的具体体现。获取类型的具体特征在Java、C#等语言中也称为反射(reflection),C++中通过模板技术也可以实现一定的反射行为。 类型
2009-08-26 19:27:00 5830
原创 我的C++实践(4):trait与policy模板技术
我们知道,类有属性(即数据)和操作两个方面。同样模板也有自己的属性(特别是模板参数类型的一些具体特征,即trait)和算法策略(policy,即模板内部的操作逻辑)。模板是对有共性的各种类型进行参数化后的一种通用代码,但不同的具体类型又可能会有一些差异,比如不同的类型可能会有自己的不同特征和算法实现策略。trait模板和policy模板技术就是把模板的trait和policy这两个针对不同
2009-08-26 13:57:00 5134
原创 我的C++实践(3):用多态机制来做设计
多态polymorphism是指具有多种形态的情况,它能根据单一的标记关联不同的行为。多态是面向对象程序设计的基础。在面向对象程序设计中的多态是一种运行时的多态。C++中有两种多态,称为动多态(运行时多态)和静多态(编译时多态),而静多态主要通过模板来实现,宏也是实现静多态的一种途径。其实在做软件设计时静多态的威力也是非常强大的,只不过我们经常对它疏忽了而已。 动多态的设计思想:
2009-08-23 20:01:00 1883 1
原创 我的C++实践(2):模板代码的测试
C++中的模板产生类代码的过程非常复杂,而模板所表示的泛型代码还要依赖于使用模板的客户端。比如模板本身的位置、使用模板的位置、定义模板实参的位置等都会对模板的实例化产生影响。因此,模板代码的测试和调试都比较难。跟踪程序(tracer)就是一种可以跟踪模板实际调用步骤的程序,它通常是一个用户自定义的类,只定义了满足模板测试的一些功能。类的每个操作中都有一个针对该操作的跟踪(比如递增一个计数
2009-08-21 14:17:00 1980 1
原创 我的C++实践(1):Stack的实现
(1)基本的Stack:以std::deque为内部容器。方法有入栈、出栈、返回栈顶元、判断栈空。//stack1.h:栈的基本实现#ifndef __STACK1_H__#define __STACK1_H__#include #include templateclass Stack{private: std::deque elems; //包含元素的容
2009-08-17 20:07:00 3346 2
原创 使用qmake工具构建QT应用程序
moc命令:用于处理含Q_OBJECT语句(即用到时了信号和槽)的QT类定义头文件(或源文件),以产生出包含QT元对象代码的标准头文件,这样经过处理后的头文件才能在源文件中使用。注意若用qmake工具来构建QT程序,可以设置规则来自动运行moc,无需我们直接运行moc来处理头文件 qmake是一个跨平台的程序,使用qmake来构建QT应用程序的步骤: qmake -pr
2009-08-12 21:26:00 4450
原创 RPM软件包的制作
RPM软件包的制作要用到Tarballs源代码包。先回顾一下Tarballs软件包的制作方法: tar cvf:打成.tar包(可再用gzip压缩成.tar.gz包)。 tar xvf:从.tar包中解包(对.tar.gz包可先用gunzip或gzip -d解压)。 注意:对于.tar.bz2型的包,使用bzip2(-d),bunzip2。 tar
2009-08-12 20:35:00 1686
Effective C++中文版(第三版)
2009-07-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人