C++中模板的使用

1.类模板格式

head文件

template <typename T>    // typename或者class都可以
class A
{
public:
           A();
           A(T data);
           void Print();
protected:
           string message;
};
 /*以下三句话是必须加的,当前的编译器不支持模板类的定义和实现分离。
 *或者将实现也写在head文件中,效果一样。
 *或者在include头文件的地方,include其cpp文件*/
#ifdef _INLINE_               
#include "A.cpp"
#endif

source文件

template <typename T>
A<T>::A(){}
template <typename  T>
void A<T>::Print(){}

2.继承

template <typename T>
class B:public A<T>        // 基类要指明类型参数,而不能仅仅用A
{
public:
            B(T data);
            void Say();
};
template <typename T>
B<T>::B(T data)
     :A<T>::A(data)        // 调用父类特定的构造函数时,必须用A<T>::明确指明属于哪个类的A
{}
template <typename T>
void B<T>::Say()
{
          /* cout<<message<<endl;
           *这样会报message undefined in this scope的错误,但是message明明
           *在基类A中已经定义了。具体原因同模板类具体化的程序有关,有待探究。
           *在这,只需用this指针即可指明,即可避免以上错误*/
           cout<<this->message<<endl;
}

3.注意

1)模板类只是类的蓝图,它并不是一个类,所以在使用模板类的时候,需要为其提供类型参数才是一个具体的类类型。

待续。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值