|
关于模板化操作符重载函数的问题我自定义了结构体A和B,然后直接重载输出操作符
template <class T>
ostream & operator << (ostream& os, T& _T)
{
os << "Struct Size = " << sizeof (T) << endl;
return os;
}
这样的函数该如何显式地调用呢? ( cout <A> << a; cout << <A> a 都不可以)
如果我直接用cout << a; //a是A的一个实例
它就会直接调用我定义的这个模板函数了,这很奇怪哦!
而如果我再加一个特化的函数:
ostream & operator << (ostream& os, A& a)
{
os << a.name << setfill('-') <<setw(5) << a.place << setfill('-') <<setw(5) << a.id << endl;
return os;
}
它又会优先调用这个特例, 原来的模板函数却不调用了.
|
|