C++模板学习

背景:项目中需要实现一个小范围应用的内存池,所谓小范围主要是针对两种特定类型而言。除类型之外,其他操作一样。

于是使用C++中的模板实现。

问题:在mempool.h中定义各个模板类,然后再在mempool.cpp中实现模板类的成员函数。生成解决方案,出现链接错误。

解决:标准C++为编译模板代码定义了两种模型:1) 包含编译模型(includsion compilation model);2) 分别编译模型(separate compilation model)。其中分别编译模型主要使用的是export关键字,但是目前VS与GCC都不支持——在VS2010与DEV C++中测试。于是,采用包含编译的方式解决——在头文件中直接定义模板类的成员函数,或者在mempool.h中#include "mempool.cpp",其中mempool.cpp为类成员函数的实现。

 

 

>typename与class的区别
>>两关键字具有相同的含义,可以互换使用,也可以同时出现在模板形参表中
>>前者可能比后者更加直观点
>>前者是作为标准C++的组成部分加入到C++中,旧的程序更有可能只用class
 
>inline函数模板:
>>template <class T>inline T func( const T&);
>>“template <模板形参>” 放最前面
>编译器使用用户提供的实际特定类型代替模板形参,重新编写模板(类或函数)。
 
 
参考文献
《C++ Primer》中文版(第4版)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值