本文共 832 字,大约阅读时间需要 2 分钟。
/************************************************************************/ /* 模板类中的成员模板 */ /************************************************************************/ #include<iostream> using namespace std; template< typename T> class MyClass { public: void assign(const MyClass<T>& x) { value_ = x.value_; } template<typename X> void assign1(const MyClass<X>& x) { value_ = x.getValue(); } T getValue() const { return value_; } private: T value_; }; int main(void) { MyClass<double> d; MyClass<int> i; d.assign(d); //ok //d.assign(i); //error //dang 当类模板中的成员函数接受的数据类型是T和MyClass<T>以外的一些(不是某个)数据类型时,模板类中的函数就要用成员函数模板 d.assign1(i);//因const MyClass<X> 和 MyClass<T>另个数据类型不一样,所以要用x.getValue() return 0;}
此外int a;
std::auto_ptr<int> x(a);
std::auto_ptr<double> y;
y=x;//说明智能指针的等号运算符是函数模板
std::auto_ptr<double> y1(x); //说明智能指针的拷贝构造函数也是个函数模板
转载地址:http://yfdii.baihongyu.com/