博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ Template 代码组织
阅读量:4583 次
发布时间:2019-06-09

本文共 782 字,大约阅读时间需要 2 分钟。

P.S:

  关于这方面内容,可以google 刘未鹏 C++ 模板不支持分离编译

关于模板的代码组织,不能将模板的定义和声明放在两个不同的文件中,比如将声明放着.h文件中,将定义放在.cpp文件中。

模板的代码组织有以下几种方式:

  1.包含模型:
  定义:把模板的定义也包含在声明模板的头文件里,即让定义和声明都位于同一个头文件中.
  2.显示实例化:
  显示实例化指示符是由关键字template和紧接其后的需要实例化的实体(可以是类,函数,成员函数等)的声明组成,而且该声明是一个已经用实参完全替换参数之后的声明.
  可以显式实例化类模板,这样就可以同时实例化它的所有类成员.但是,对于那些前面已经实例化过的成员,就不能再次对它们进行实例化.对于每个不同实体,在一个程序中最多只能有一个显示实例化实体.
  3.分离模型:
  关键字export:
  export的功能:在一个文件里面定义模板,并在模板的定义和(非定义的)声明的前面加上关键字export.
  对于一个预处理文件内部,只需要在第一个声明前标记export关键字就可以了,后面的重新声明(也包括定义)会隐式保留这个关键字export特性.关键字export可以应用于函数模板,类模板的成员函数,成员函数模板和类模板的静态数据成员.另外,它还可以用于类模板的声明,这将意味着每个可导出的类成员都被看做导出实体,但类模板本身实际上却没有被导出(因此,类模板的定义仍然需要出现在头文件中).但是,仍然可以隐式或者显示地定义内联成员函数.然而,内联函数却是不可导出的.
P.S:
  export关键字不能和inline关键字一起使用.如果用于模板的话,export要位于template的前面.

转载于:https://www.cnblogs.com/suiyu/archive/2011/11/24/2262137.html

你可能感兴趣的文章
模板 - 字符串 - Manacher
查看>>
2017.1.2
查看>>
Ice_cream's world I
查看>>
echarts中国地图散点涟漪效果
查看>>
三.NFS存储服务
查看>>
sql2008日志文件截断
查看>>
git增加远程仓库
查看>>
[POJ3162]Walking Race(DP + 单调队列)
查看>>
作业3-单元测试
查看>>
【生活日常】一切从Hello World开始
查看>>
微信分享 apicloud方式 中遇到的坎
查看>>
用例图之我见
查看>>
UVA 10972 RevolC FaeLoN(边-双连通+缩点)
查看>>
开源的Android视频播放器
查看>>
[算法]死磕二叉树专题算法
查看>>
MySQL知识点小结
查看>>
(leetcode题解)Third Maximum Number
查看>>
DOM
查看>>
Apache Qpid Broker云
查看>>
Algorithm --> 爬楼梯求最大分数
查看>>