2009年11月7日

CPP Templates 之 ADL应用举例

摘要: ADL应用举例:1.友元名称插入:在类中的友元函数声明可以是该友元函数的首次声明,请参见下面的例子:template<typename T>class C{ ... friend void f(); friend void f(C<T> const&);};void g(C<int>* p){ f();//error f(*p);//ok}通常而言,友元声明在外围(类)作用域中是不可见的如果友元函数所在的类属于ADL的关联类集合,那么我们这个外围类是可以找到该友元声明的。2.插入式类名称如果在类本身的作用域中插入该类的名称,我们就称该名称为插入式类名 阅读全文

posted @ 2009-11-07 22:25 ATAK 阅读(283) 评论(0) 推荐(0) 编辑

CPP Templates 之 名称分类和名称查找

摘要: 名称的分类:标示符 identifier:一个只有字符、数字和下划线组成的不间断字符序列运算id operator-function id:运算符,例如*、%、+\-,强制转换id conversation-function id:static_cast、dynamic_cast之类模板id template id:模板名称非受限id unqualified-id:广义化的标示符 identifi... 阅读全文

posted @ 2009-11-07 18:15 ATAK 阅读(473) 评论(0) 推荐(0) 编辑

Eclipse运行时怎么给main()函数的args[]传递值呢?

摘要: Run Configurations ->Arguments 阅读全文

posted @ 2009-11-07 14:17 ATAK 阅读(545) 评论(0) 推荐(0) 编辑

2009年11月6日

CPP Templates 之 技巧性基础知识

摘要: 1.关键字typename在C++标准化过程中,引入关键字typename是为了说明:模板内部的标识符可以是一个类型,譬如下面的例子:template<typename T>class MyClass{ typename T::SubType * ptr; ...};template <class T>class MyClass{ typename T::SubType 8... 阅读全文

posted @ 2009-11-06 14:20 ATAK 阅读(297) 评论(0) 推荐(0) 编辑

2009年10月29日

CPP Templates 之 非类型模板参数限制

摘要: 非类型模板参数是有限制的。通常而言,他们可以使常整数(包括枚举值)或者指向外部链接对象的指针浮点数和类对象是不允许作为非类型模板参数的:template<double VAT>//ERRORdouble process(double V){ RETURN V*VAT;};template<std::string name>//ERRORclass MyClass{̷... 阅读全文

posted @ 2009-10-29 15:48 ATAK 阅读(285) 评论(0) 推荐(0) 编辑

CPP Templates 之 缺省模板实参

摘要: 这里仅仅是举一个稍微特殊的例子,如果想了解的更详细请参考《c++ primer》#include <vector>#include <stdexcept>template <typename T,typename CONT=std::vector>class stack{private: CONT elems;public: void push(T CONST&... 阅读全文

posted @ 2009-10-29 14:05 ATAK 阅读(255) 评论(0) 推荐(0) 编辑

CPP Templates 之 类模板局部特化

摘要: 类模板可以被局部特化,现举例如下:template <typename T1,typename T2>class MyClass{...}就可以有下面几种局部特化://局部特化:两个模板参数具有相同的类型template <typename T>class MyClass<T,T>{……}//局部特化:第二个模板参数的类型是inttemp... 阅读全文

posted @ 2009-10-29 13:59 ATAK 阅读(476) 评论(0) 推荐(0) 编辑

2009年10月27日

内存字节对齐详解(转帖)

摘要: 多字节对一些范围内的字符用一个字节表示,另一些用二个字节,有的用三个或四个字节,等等。 宽字节方案统一用固定数目的字节来表示字符。 C语言C99标准提供了宽字符类型wchar_t和其它关联库历程。 结构体占用内存长度的计算: 1。系统默认以4个字节对齐,若没有默认以第一个成员的长度为准; 2。成员变量的长度如果不足改长度,仍以该长度计算; 3。成员变量依次存放,若前面分配的空间有剩余而且继续存入该... 阅读全文

posted @ 2009-10-27 15:52 ATAK 阅读(895) 评论(0) 推荐(1) 编辑

c++内存中字节对齐问题详解【转帖】

摘要: 源地址:http://hi.baidu.com/gamedot/blog/item/d4064a548e73ae183b29354a.html 一、什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是... 阅读全文

posted @ 2009-10-27 10:42 ATAK 阅读(424) 评论(0) 推荐(0) 编辑

2009年10月22日

CPP多继承的二义性问题及示例

摘要: 一般说来,在派生类中对基类成员的访问应该是唯一的。但是由于多继承情况下,可能造成对基类中某个成员的访问出现了不唯一的情况,则称为对基类成员访问的二义性问题。下面再讨论另外一种情况下的二义实际上,在例 FabLamp中出现过这一问题,由派生类对象a在内存的布局图可见,在同一对象a中存在重名的成员函数如on()、off()和print(),因此在调用成员函数时应避免二义性问题。这里有两种不同的情况:第... 阅读全文

posted @ 2009-10-22 22:01 ATAK 阅读(496) 评论(0) 推荐(0) 编辑

导航