博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
成员模板和参数模板
阅读量:5740 次
发布时间:2019-06-18

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

1. 成员模板    

     为了实现STL(标准模板库)的设计。模板可以用作结构,类或模板类的成员。如实例1,定义模板类beta,包含成员数据即模板类hold定义的对象 q,n。成员函数包括模板函数func。头文件包含以下两种模板类定义方法,第一是类中定义。另一种是类外定义。

  实例1 成员模板实例

代码:

结果:
    
分析:

   1.成员模板类或者成员模板函数作为模板类成员(类型参数T),在定义的时候,可以把模板类的类型参数视作已知“类型”,然后在这个“非模板”的类使用模板类或者模板函数。这样分析比较方便。

   2.成员模板函数的类型隐式实例化。
   3.模板类外定义成员模板类或模板函数,并不是所有的编译器都支持。定义的时候,应该使用作用域说明符“::”,表明模板类和模板函数的成员身份。且嵌套说明模板参数。

2. 参数模板     

     从使用的角度,倘若模板类作为类型参数,即模板的类型参数本身是一个带类型参数的模板类。举例如下:

template

       
其中,
template<template T> class
为类型,
Thing
为参数。例如,可以声明这样的对象:
gamma
g;

       也就是说,模板类包含某些对象,这些成员对象是实例化模板类beta得到。

  见如下代码:

#define flag#ifdef flagtemplate< template
class Thing >class gamma{ Thing
a; Thing
b;public: gamma(){} gamma(int x=0,double y=0,int c1=0,int c2=0):a(c1,x),b(c2,y){}//注意c1,c2的缺省值 void show() {a.show();b.show();}};#endif
       
模板类型参数是实例1中声明和定义的模板类bata。

   可以这样实例化对象:

gamma
p(1,2.34,5,6);
 
  实际上,可以混合使用模板参数和常规参数。声明如下:
template
       
 这时,成员a,b为泛型而不是上例中硬编码制定类型int和double。当然对象声明也应该更改为:
alpha

转载于:https://www.cnblogs.com/engineerLF/p/5393151.html

你可能感兴趣的文章
大数据与机器学习:实践方法与行业案例.2.6 本章小结
查看>>
Apache Storm 官方文档 —— FAQ
查看>>
量化交易入门——数学模型应用于投机交易
查看>>
C++游戏系列4:杀伤距离有限制
查看>>
iOS 高性能异构滚动视图构建方案 —— LazyScrollView
查看>>
Java 重载、重写、构造函数详解
查看>>
【Best Practice】基于阿里云数加·StreamCompute快速构建网站日志实时分析大屏
查看>>
【云栖大会】探索商业升级之路
查看>>
HybridDB实例新购指南
查看>>
小程序,会是下一个创业风口吗
查看>>
C语言及程序设计提高例程-35 使用指针操作二维数组
查看>>
华大基因BGI Online的云计算实践
查看>>
深入理解自定义Annotation,实现ButterKnif小原理
查看>>
vim的快捷键大全
查看>>
zeromq学习笔记2——简单的客户端和服务端测试程序
查看>>
(转载)JavaScript大师Nicholas C. Zakas谈TypeScript
查看>>
jvm开启垃圾回收日志记录
查看>>
doT js模板入门
查看>>
[java] 多态实现的JVM调用过程
查看>>
iOS开发中的零碎知识点笔记 韩俊强的博客
查看>>