问题
类模板重载《,》在VC6,VS2008中编译无法通过
解决方法:
VS2008
需要在友元函数声明前加上template<Class Type>,否则永远都是LINK2019 ,不明白为何。
VC6
出现private成员无法访问。将函数的重载实现放在类体内解决。
这样在两个编译器下都可以通过,但是不知道为何如此。
看了时空复杂度,那个计算啊,好像脑袋退化了,只是求和却花费了很多的时间。
算法:输入,输出,确定性,有穷性,有效性。还是认为算法和程序没有区别。即便程序不一定在有穷步后结束,那么可以认为该算法是出于循环的目的。
算法:正确性,可使用性,可读性,效率,容错性
效率:后期时间测试,事前估计,空间复杂度,时间复杂度(程序步)
线性,非线性,逻辑,物理
大致如下:
函数特征
数据声明
作用域
类,结构,联合
对象
输入输出
参数传递
重载 函数名,操作符
动态分配 C++,C区别
友元
内联
算了几个程序步,其实只是求和,花了很久很久的时间,大概,脑子不用是不灵光了的。
再看模板,只是软件复用?C++ Primer中但是模板声明时的规矩便有8,9条之多。
1.模板类型参数,模板非类型参数,所有的参数类型前均需要有class/typename;而typename较class晚,能明确定义后面的名字为类型;
2.同一个参数名在列表中不可以重复 template<class A,class A>则为错误
3. 参数名可以作为返回值
template<typename A,typename B>
A Fun(B);
4.模板的多个声明和实现可以使用不同的类型名
5. 全局变量和模板类型参数同名,且出现在之前,则该变量将被屏蔽;
6.模板定义中的参数不可以与模板参数同名
7.模板参数在函数参数表中可以出现的次数没有限制
8. inline,extern 需要放在模板参数表之后。
9.参数名可以在多个模板见重复使用。