模板函数应该将声明与定义放在一起
看如下例题:
```
//tem.h
#ifndef _TEM_H
#define _TEM_H
template T add(T a, T b);
//{
//return a+b;
//}
#endif
//tem.cpp
include "tem.h"
template T add(T a, T b)
{
return a + b;
}
template int add(int, int);//实例化定义,必须放在模板定义的后面
//main.cpp
include
include "tem.h"
using namespace std;
int main()
{
继续阅读 »
延迟绑定
Python闭包函数所引用的外部自由变量是延迟绑定的。
In [2]: def multipliers():
...: return [lambda x: i * x for i in range(4)]
In [3]: print [m(2) for m in multipliers()]
[6, 6, 6, 6]
如以上代码: i是闭包函数引用的外部作用域的自由变量, 只有在内部函数被调用的时候才会搜索变量i的值, 由于循环已结束, i指向最终值3, 所以各函数调用都得到了相同的结果。
解决方法:
1) 生成闭包函数的时候立即绑定(使用函数形参的默认值):
In [5]: def multip继续阅读 »