指定了模版参数类型后,在编译的时候就会生成一个新的具体的类,然后用这个类构造对象。用<>来指定模版的类型
而函数模版就不是这样,他先调用函数,发现是什么类型再推到,而类是必须要指定的
所有模版类必须要指定类型,而函数则不用。
代码如下:
#include <iostream> using namespace std; template<typename T> class MyClass{ private: T x; T y; public: MyClass(T a) :x(a), y(a){} MyClass(T a, T b) :x(a), y(b){} friend ostream& operator << (ostream &os, MyClass myclass){ os << "(" << myclass.x << "," << myclass.y << ")"; return os; } }; void main(){ MyClass<int> myclass(10); MyClass<double> myclass2(10.1, 20.7); cout << "myclass:" << myclass << endl; cout << "myclass2" << myclass2 << endl; getchar(); }
运行截图如下:
这里为什么要用友元呢?因为是只有友元访问,才能访问这个类的私有成员!!!!