1
在模板类中定义同类型模板参数时不需呀模板参数说明:
template<class T>
class TC
{
public:
TC() : m (0) {}
bool Equals(const TC& other) const
{
return (m==other.m);
}
private:
T m;
};
2
同类型类,包括模板参数相同,互为
friend
,不同类型则有私有访问限制,特别表现在模板类中
template<class T>
class TC
{
public:
TC() : m (0) {}
template<class B>
bool Equals(const TC<B>& other)
{
return (m == (T)other.m);
}
private:
T m;
};
void main()
{
TC<int> e;
TC<short> o;
bool euqal = e.Equals(o); // error!
}
3
模板的声明与定义不能分离原因是:定义实体类之前编译器是不会生成任何模板类的定义的,所以,如果定义实现在在另一个
cpp
文件,在此
cpp
定义模板类实体合理,但在其它文件中定义实体就无法获得模板定义部分。
4
模板使用应与一般类一致,在真正定义实体或使用成员或函数时,只需要进行声明,而不需要包含头文件,模板声明为
template<class T>class TC;