反而变得复杂、可读性变差
添加新的声明 template <typename T>
使用 typename 来声明类型参数而不是 class,防止产生歧义。
如何处理 max (x,m) 的处理【x 和 m 的类型不一样】?
可以定义一个 max 的重载函数。
非模板函数、模板函数(显式具体化)、重载函数 —— 编译器会优先调用重载函数、显式具体化的模板函数,然后是非模板函数,不会出现歧义。函数模板和函数重载可以配合在一起使用。
类也可以模板化。
左边是初始版本,右边是类模板。
在类外定义函数的时候,需要再次声明类型参数 T。 template <class T>
创建的时候需要显式实例化,int 和 double 的 Stack 是两个类。
cpp 完整的定义通常定义在头文件中
file2.cpp 找不到 max 定义,也找不到完整的 S 代码
输入输出流的重定向
先新建一个输入流 ifstream in("in.txt");
保存输入流
重置输入流
测试用例可以从文件读入并输出到文件
不能作为类的成员函数进行重载
不正确的解决方案
正确的解决方案
非虚函数进行虚化,非虚接口。
全局函数针对不同的类也有派生类。调用虚函数。