自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 资源 (2)
  • 收藏
  • 关注

原创 模板之泛化仿函数(二)

实现 STL 的 BindFirst 功能假设有个 Functor 取两个整数作为参数,你想将其中一个整数绑定为固定值,只让另一个变化。绑定会产生出一个”只取单一整数“的 Functor,如下:void f(){ // Define a Functor of two arguments Functor cmd1(something); //

2014-11-29 21:32:42 897

原创 模板之泛化仿函数(一)

1 泛化仿函数的要求参数个数应该是任意的,参数的型别也应该是任意的。// 我们的Functor 应该是这样的,Functor 只是一个 wrapper(外覆类) template class Functor{public: ResultType operator()(); // 转发函数 ResultType operator(Parm1 p1); ResultT

2014-11-29 17:48:21 2534

原创 成员函数指针

成员函数指针的行为含香函数指针,但你想调用他们时,除了参数之外,你还必须传递一个对象。class Parrot{public: void Eat() { cout << "Tsk, knick, tsk..." << endl; } void Speak() { cout << "On Captain, My Captain" << endl; }};int m

2014-11-29 12:01:56 741

原创 Singleton(一)

1 用以支持 Singleton 的一些 C++ 几基本手法// Header file Singleton.hclass Singleton{public: static Singleton* Instance() { if (!pInstance_) pInstance_ = new Singleton; return pInstance_; }private:

2014-11-29 11:38:26 789

原创 编译错误模板参数太多的几种情况

编译器报错:模板参数太多的错误1 C++ 不允许同名而参数个数不同的 templates 存在templateclass Functor{};template class Functor{};2 特例1:模板的偏特化与模板原型声明的模板参数个数不同// 模板原型templateclass Functor{};// 模板的偏特化,增加了参数 Parm1te

2014-11-26 13:33:08 8383

原创 类的向前声明

1 在类 A 和 类 B 的头文件中,类 B 要知道

2014-11-24 19:53:39 3410

原创 Command设计模式

Command对象是一个“和其实际执行着分开存储”的组件。其重要目的是降低系统中两个部分(请求者 invoker 和接收者 receiver )之间的依存性。 典型的行为次序: 1 客户端产生一个 ConcreteCommand 对象,并传给它足够信息以备执行某项任务。 2 客户端将 ConcreteCommand 对象中的 Command 接口传给 invoker(请求者),由它保存这个接

2014-11-24 19:15:20 802

原创 return 和 exit

1 return的作用:释放局部变量(会调用局部对象的析构函数),并弹栈(即释放其所在函数申请的栈),并回到其上级函数。 2 exit的作用:exit 不是系统调用,是glibc对系统调用_exit 或 _exitgroup() 的封装。不做任何清理栈的操作,只返回到操作系统(即结束进程,进程申请的堆栈由操作系统清理)。 3 return 和 exit 在 main 函数中使用:

2014-11-22 10:33:01 724

原创 模板之Typelist的"增删改查"

1 Typelist 的索引式访问

2014-11-20 19:26:33 939

原创 模板之Typelists

Typelists 是一个只携带类型信息的想列表

2014-11-20 15:47:54 977

原创 模板之TypeTraits

Traits 是一种 “可用于编译器根据型别作判断” 的泛型技术,像在执行期根据数值执行判断一样。Traits 好处:可以在 ”型别确立当时“意外的其他地点做出与型别相关的判断。这会让代码变得比较干净,更具可读性

2014-11-20 12:27:38 732

原创 typename关键字

在 template declaration(模板声明) 中class 和 typename 有什么不同?1 class 和

2014-11-19 15:10:27 798

原创 模板之编译器侦测可转换型和继承性

问题:如何知道 U 是否继承自 T

2014-11-19 09:30:19 912

原创 非静态成员函数的非法调用错误

1 静态成员函数相当于全局函数,只有一个类名字空间的限制。2 类成员函数式成员内部的函数,同一个累的对象实例有很多,每一个实例都有自己不同过得成员变量值。每个实例通过成员函数来操作其成员变量。所以成员函数的调用必须明确的指出是哪一个实例对象在操作。3 静态成员函数是类的函数,无需指明是某个实例

2014-11-18 20:10:47 28634

原创 模板之型别选择

问题:在NiftyContainer 例子中,也许以一个std::vector 作为后端存储结构。面对 polymorphic 型别,不能存储其对象实体,必须存储其指针。但如果面对 non-polymorphic 型别,可以存储其实体,比较有效率。这时,vector 还是 vector 需要根据 isPolymorphic 来决定 ValueType 定义为 T * 或 T。方法1:可以选择

2014-11-18 15:11:58 920

原创 模板之型别对型别的映射

假设 Widget 类定义是我们不能修改的类型:class Widget {public: Widget(int arg, int i = -1) { } ....};现在

2014-11-18 10:33:31 747

原创 模板之长整数映射为型别

Int2Type会根据引数所得的不同数值产生不同的型别。这是因为“不同的 template 的具现体”本身是“不同的类型”。因此 Int2Type 不同于 Int2Type,以此类推。用来产生型别的那个数值是一个枚举值。符合下列两个条件便可使用 Int2Type:1 有必要根据某个编译期常数调用一个或数个不同的函数2 有必要在编译器实施“分派”(dispatch)执行期的分

2014-11-17 22:57:25 857

原创 模板的偏特化

template class Window, class Controller>class Widget{ ....};// 特化// 其中 ModalDialog 和 MyController 是另外定义的 classtemplate<>class Widget{ ....};// 偏特化// 其中 Window 是泛化类型参数

2014-11-12 10:01:23 790

原创 C专家编程-数组和指针并不相同

1 数组并非指针 extern int *x; extern int y[]; 第一条语句声明x是个int型的指针;第二条语句声明y是个int型数组,长度尚未确定(不完整的类型),其存储在别处定义。 file1: int mango[100]; file2: extern int *mango; // 程序无法运行 更改为 extern int mango[]; //OK,声明与定

2014-11-07 14:28:09 614

原创 C专家编程-分析C语言的声明

1 理解C语言声明的优先级规则 A 声明从它的名字开始读取,然后按照优先级顺序依次读取。 B 优先级从高到低依次是:    1 声明中被括号括起来的那部分    2 后缀操作符:括号() 表示这是一个函数,而方括号[] 表示这是一个数组。    3 前缀操作符:星号* 表示“指向…的指针” C 如果const 和(或)volatile 关键字的后面紧跟类型说明符(如int,long等)

2014-11-07 11:22:56 847

原创 C专家编程-语言的特性之计算的次序

x = f() + g() *h();

2014-11-06 19:54:17 563

原创 C专家编程-整型提升与寻常算术转换

1 字符和整型(整型提升)       如果char、short int或者int型位段(bit-field),包括它们有符号或无符号变型,以及枚举类型,可以使用在需要int或者unsigned int的表达式中。如果int可以完整表示源类型的所有值,那么该源类型的值就转换为int,否则转换为unsigned int。这称为整型提升。 2 寻常算术转换      许多操作数类型为算术类型的双

2014-11-06 12:54:54 725

VisualC++编程高手.rar

vc编程高级编程,以及编程中通常要用到的技术。

2011-07-21

WINDOWS编程MFC类库中文详解

windowsAPI编程中文MFC类库详解,方便英文吃力的同志

2010-06-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除