摘要:
有三种友元声明可以出现在类模板中:1 非模板友元类或友元函数函数 foo() 成员函数bar()以及 foobar类都是类模板QueueItem的所有实例的友元class Foo { void bar(); }; template <class T> class QueueItem { friend class foobar; friend void foo(); friend void Foo::bar(); // ... };2 绑定的 bound 友元类模板或函数模板:在类模板 QueueItem的实例和它的友元也是模板实例之间定义了一对一的映射,对 QueueItem的每一 阅读全文
posted @ 2011-08-04 22:32
lidan
阅读(1735)
评论(0)
推荐(0)
摘要:
1,绑定给非类型参数的表达式必须是一个常量表达式,即,它必须能在编译时被计算出结果。2,非 const 对象的值不是一个常量表达式,它不能被用作非类型模板参数的实参3,名字空间域中任何对象的地址,即使该对象不是const 类型,是一个常量表达式,而局部对象的地址则不是。4, sizeof表达式的结果是一个常量表达式,所以它可以被用作非类型模板参数的实参。对于一个模板非类型参数,如果两个不同的表达式的求值结果相同,则它们被认为是等价的模板实参。在模板实参的类型和非类型模板参数的类型之间允许进行一些转换,能被允许的转换集是函数实参上被允许的转换的子集:1 左值转换:包括从左值到右值的转换,从数组到 阅读全文
posted @ 2011-08-04 21:56
lidan
阅读(693)
评论(0)
推荐(0)
摘要:
">>>"逻辑右移,左边添加0注意 char,byte和short在逻辑右移时会先转换成int,然后在int的基础上逻辑右移。long型的移位long型移位很诡异,不知道怎么回事, long l = -21474837000L; System.out.println(l); BitManipulation.pBinLong("l", l); l >>>= 3; System.out.println(l); BitManipulation.pBinLong("l", l);11111111111111 阅读全文
posted @ 2011-08-04 09:49
lidan
阅读(270)
评论(0)
推荐(0)

浙公网安备 33010602011771号