当前位置: 首页 > news >正文

iis网站服务被禁用网站规划书500字

iis网站服务被禁用,网站规划书500字,网站开发的评论界面怎么写,购物网站的功能板块系列文章目录 14.4.4 数组模板示例和非类型参数 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录14.4.4 数组模板示例和非类型参数 14.4.4 数组模板示例和非类型参数 模板常用作容器类,这…

系列文章目录

` 14.4.4 数组模板示例和非类型参数


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 系列文章目录
  • 14.4.4 数组模板示例和非类型参数


14.4.4 数组模板示例和非类型参数

模板常用作容器类,这是因为类型参数的概念非常适合于将相同的存储方案用于不同的类型。确实,为容器类提供可重用代码是引入模板的主要动机,所以我们来看看另一个例子,深入探讨模板设计和使用的其他几个方面。具体地说,将探讨一些非类型(或表达式)参数以及如何使用数组来处理继承族。首先介绍一个允许指定数组大小的简单数组模板。一种方法是在类中使用动态数组和构造函数参数来提供元素数目,最后一个版本的 Stack模板采用的就是这种方法。另一种方法是使用模板参数来提供常规数组的大小,C++11新增的模板 array 就是这样做的。程序清单 14.17 演示了如何做。
程序清单 14.17arraytp.h

//arraytp.h  -- Array Template
#ifndef ARRAYTP_H_
#define ARRAYTP_H_#include <iostream>
#include <cstdlib>template <class T, int n>
class ArrayTP
{
private:T ar[n];
public:ArrayTP() {};explicit ArrayTP(const T & v);virtual T & operator[](int i);virtual T operator[](int i) const;
};template <class T, int n>
ArrayTP<T,n>::ArrayTP(const T & v)
{for (int i = 0; i < n; i++)ar[i] = v;
}template <class T, int n>
T & ArrayTP<T,n>::operator[](int i)
{if (i < 0 || i >= n){std::cerr << "Error in array limits: " << i<< " is out of range\n";std::exit(EXIT_FAILURE);}return ar[i];
}template <class T, int n>
T ArrayTP<T,n>::operator[](int i) const
{if (i < 0 || i >= n){std::cerr << "Error in array limits: " << i<< " is out of range\n";std::exit(EXIT_FAILURE);}return ar[i]; 
}#endif

请注意程序清单 14.17中的模板头:

template <class T,int n>

关键字 class(或在这种上下文中等价的关键字 typename)指出T为类型参数,int指出n的类型为 int。这种参数(指定特殊的类型而不是用作泛型名)称为非类型(non-type)或表达式(expression)参数。假设有下面的声明:

ArrayTP<double,12>eggweights;

这将导致编译器定义名为 ArrayTP<double,12>的类,并创建一个类型为ArrayTP<double,12>的eggweight对象。定义类时,编译器将使用double 替换 T,使用12替换 n。
表达式参数有一些限制。表达式参数可以是整型、枚举、引用或指针。因此,doublem是不合法的,但 doublemm 和 doublepm 是合法的。另外,模板代码不能修改参数的值,也不能使用参数的地址。所以,在 ArayTP模板中不能使用诸如 n++和&n等表达式。另外,实例化模板时,用作表达式参数的值必须
是常量表达式。与Stack中使用的构造函数方法相比,这种改变数组大小的方法有一个优点。构造函数方法使用的是通过 new 和 delete 管理的堆内存,而表达式参数方法使用的是为自动变量维护的内存栈。这样,执行速度将更快,尤其是在使用了很多小型数组时。
表达式参数方法的主要缺点是,每种数组大小都将生成自己的模板。也就是说,下面的声明将生成两个独立的类声明:

ArrayTP<double,12>eggweights;ArrayTP<double,13>donuts;

但下面的声明只生成一个类声明,并将数组大小信息传递给类的构造函数:

Stack<int>eggs(12);
Stack<int>dunkers(13);

另一个区别是,构造函数方法更通用,这是因为数组大小是作为类成员(而不是硬编码)存储在定义中的。这样可以将一种尺寸的数组赋给另一种尺寸的数组,也可以创建允许数组大小可变的类。


http://www.yayakq.cn/news/165955/

相关文章:

  • 如何在建设银行网站申购纪念币安徽鑫华建设有限公司网站
  • 教育网站集约化建设中国网站设计模板
  • 用html制作旅游网站优化网站性能
  • 网站开发商可以代刷好评吗网站收录方法
  • python 快速做网站免费建手机商城网站
  • 怎么查看网站的建设时间产品代理加盟区域代理
  • 泉州建设网站公司吗网站中使用特殊字体
  • 建筑网站步骤wordpress 安装流程
  • 给男票做网站表白的软件网站域名的安全性
  • 中山做网站的公司铜仁市建设局网站
  • 长春火车站出站要求商标网官网
  • 建设的网站首页怎么网站开发
  • 福州网站建设方案优化二手车为什么做网站
  • 会展企业网站建设方案网站建设的用处
  • 天津网站优化哪家好网站加图标
  • 京东那个做快消的网站烟台网站排名优化公司
  • 深入了解网站建设阿里巴巴网站怎么做全屏分类
  • 学校网站制作公司主页设计
  • 大学生网站建设报告wordpress网页播放器插件
  • 网站网页设计模板下载it外包项目都在哪接的
  • 滁州seo网站排名优化广告制作包括范围
  • 免费建个超市网站高端疫苗
  • 网站模板psd重庆人社app官网下载链接
  • 无锡手机网站开发黄山自驾游攻略
  • 国外教育网站模板高端网站名字
  • 网站和服务器的关系甘肃兰州怎么样
  • 沈阳公司网站制作莱芜东风街
  • 浙江省大成建设集团有限公司网站品牌营销优化
  • 网站三网合一什么意思自己怎么做网址开网站
  • 学习php网站建设传奇合成版2合1雷霆版