摘要:
STL里面的很多容器,都是用类模板技术实现的。以vector为例,说明如何使用类模板技术来实现。 以上是操作只能在myvector里面存储一般的数据类型,如int,double,char等,存储自定义的Teacher类型时,则要注意: 假如Teacher类型定义如下: class Teacher{p 阅读全文
摘要:
前面说过,类模板是类的抽象,给类模板指定一个具体类型,就可以将类模板实例化变成了一个类。所以,在用类模板生成类时,类模板中的static成员也会生成一份属于这个类的static成员,也就是说用每个类模板生成的类都有属于自己的独特static成员,类模板中的static成员并非是所有类模板生成的类所共 阅读全文
摘要:
一般来说,如果将声明类模板的.h文件、实现类模板函数的.cpp文件、以及主函数所在的.cpp文件写在3个文件里,则主函数所在的.cpp问价需要包含类模板实现的.cpp文件,而不能像普通的函数那样包含.h文件。这时因为C++对类模板的编译是二次编译,主函数所在.cpp只包含类模板的.h文件的话,主函数 阅读全文
摘要:
和类一样,类模板里面声明的函数,其函数体写在类里面和外面都行,但是有一点需要注意:1.用友元函数重载<< 或 >>运算符,函数声明写在类模板里面,函数实现写在类模板外面,要在函数名和函数输入参数之间写上Typename定义的那个类型,如template <typename T>,则应写上<T>。举个 阅读全文
摘要:
1.类模板的定义和使用 2.类模板做函数参数 3.从模板类派生出一个普通类 4.从模板类派生出一个模板子类 阅读全文
摘要:
1.C++编译器并不是把函数模板变成能够处理任意类型的函数,而是从函数模板根据函数类型生成不同的函数; 2.C++编译器会对函数模板进行两次编译:在声明的地方对模板代码本身进行编译;在调用的地方对参数替换后的代码进行编译。 阅读全文
摘要:
当函数模板的名称和普通函数的名称一样时,会发生函数重载。 关于函数模板和普通函数在一起出现时,有以下几个原则: 1.函数模板可以像普通函数一样被重载; 2.C++编译器优先考虑普通函数; 3.如果函数模板可以产生一个更好的匹配,那么选择函数模板; 4.可以通过空模板实参列表的语法限定编译器只能调用模 阅读全文
摘要:
1 #include 2 using namespace std; 3 4 void myswap01(int& x,int& y) 5 { 6 int temp=0; 7 temp=x; 8 x=y; 9 y=temp; 10 } 11 12 void myswap02(char& x,char& y) 13 { 14 char ... 阅读全文
摘要:
STL:Standard Template Libtary,标准模板库 STL中的三大概念:算法(algorithm)、容器(container)、迭代器(iterator) 容器主要包含有: 1.标准STL序列容器: vector(可以存储基本数据类型,也可以存储类对象,相当于C++的数组)、 s 阅读全文