テンプレートの特化、偏特化

1844 ワード

/*元のテンプレートクラス:
template
class object{
...
};
フル特化:
template<>
class object{
...
};
オフセット:(最初のパラメータタイプのみを特化)
template
class object{
...
};*/
#include
using namespace std;
//# pragma execution_character_set("utf-8")
//
//======================================================
template
class Dvidesion{
public:
Dvidesion(T dvidend ,T2 dvidsor):mdvidend(dvidend),mdvidsor(dvidsor){}
friend ostream& operator<
out<
<
return out;
}
private:
T mdvidend;
T2 mdvidsor;
};
//=============================================================
template<>
class Dvidesion{
public:
Dvidesion(double dvidend, double dvidsor) :mdvidend(dvidend), mdvidsor(dvidsor){}
friend ostream& operator<
out << "consult: "<< D.mdvidend + D.mdvidsor << endl
<< "result: "<< D.mdvidend-D.mdvidsor << endl;
return out;
}
private:
double mdvidend;
double mdvidsor;
};
//====================================================
template
class Dvidesion{
public:
Dvidesion(T dvidend, double dvidsor) :mdvidend(2*dvidend), mdvidsor(5+dvidsor){}
friend ostream& operator<
out << "consult: "<< D.mdvidend + D.mdvidsor << endl 
<< "result: "<< D.mdvidend - D.mdvidsor << endl;
return out;
}
private:
T mdvidend;
double mdvidsor;
};
int main(){
Dvidesion a(10, 8);
Dvidesion b(10.0, 8.2);
Dvidesion c(10, 7.6);
cout << a;
cout << b;
cout << c;
system("PAUSE");
return 0;
}