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

西安市长安区规划建设局网站vi设计

西安市长安区规划建设局网站,vi设计,axure做网站原型教程,网站公司的利润在哪里模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。模板是创建泛型类或函数的蓝图或公式。库容器,比如迭代器和算法,都是泛型编程的例子,它们都使用了模板的概念。每个容器都有一个单一的定义,…

模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。

模板是创建泛型类或函数的蓝图或公式。库容器,比如迭代器和算法,都是泛型编程的例子,它们都使用了模板的概念。

每个容器都有一个单一的定义,比如 向量,我们可以定义许多不同类型的向量,比如 vector <int>vector <string>

您可以使用模板来定义函数和类,接下来让我们一起来看看如何使用。

C++ 中 typename 和 class 的区别

在 C++ Template 中很多地方都用到了 typename 与 class 这两个关键字,而且好像可以替换,是不是这两个关键字完全一样呢?

相信学习 C++ 的人对 class 这个关键字都非常明白,class 用于定义类,在模板引入 c++ 后,最初定义模板的方法为:

template<class T>......

这里 class 关键字表明T是一个类型,后来为了避免 class 在这两个地方的使用可能给人带来混淆,所以引入了 typename 这个关键字,它的作用同 class 一样表明后面的符号为一个类型,这样在定义模板的时候就可以使用下面的方式了:

template<typename
T>......

在模板定义语法中关键字 class 与 typename 的作用完全一样。

typename 难道仅仅在模板定义中起作用吗?其实不是这样,typename 另外一个作用为:使用嵌套依赖类型(nested depended name),如下所示:

class MyArray 
{ public:typedef int LengthType;
.....
}template<class T>
void MyMethod( T myarr ) 
{ typedef typename T::LengthType LengthType; LengthType length = myarr.GetLength; 
}

这个时候 typename 的作用就是告诉 c++ 编译器,typename 后面的字符串为一个类型名称,而不是成员函数或者成员变量,这个时候如果前面没有 typename,编译器没有任何办法知道 T::LengthType 是一个类型还是一个成员名称(静态数据成员或者静态函数),所以编译不能够通过。

函数模板可以重载,只要它们的形参表不同即可。例如,下面两个模板可以同时存在:

template<class T1, class T2>
void print(T1 arg1, T2 arg2)
{cout<<arg1<<" "<<arg2<<endl; 
}
template<class T>
void print(T arg1, T arg2)
{cout<< arg1<< " "<< arg2<< endl;
}

如果需要代码分离,即 template class 的声明、定义,以及 main 函数分属不同文件。例如:

src_dir
|____MyStack.h
|____MyStack.cpp
|____main.cpp

则 main.cpp 文件中需要同时包含 .h 文件和 .cpp 文件,不然会出现链接错误。

// main.cpp
#include "MyStack.h"
#include "MyStack.cpp"// 其他include
// main函数主体 

其实举个简单的例子反而更利于新手理解本质。

函数模板:

#include <iostream>
using namespace std;
template <typename T1>
void Swap(T1& a, T1& b)
{T1 t = a;a = b;b = t;
}
int main()
{int a = 2;int b = 3;cout <<"a = " << a << ";  b = " << b <<endl;Swap(a,b);cout <<"a = " << a << ";  b = " << b <<endl;float c = 0.02;float d = 0.03;cout <<"c = " << c << ";  d = " << d <<endl;Swap(c,d);cout <<"c = " << c << ";  d = " << d <<endl;return 0;
}

类模板:

#include <iostream>
using namespace std;
template <typename T>
class Op{
public:T peocess(T v){return v * v;}
};
int main()
{Op<int> opInt;Op<double> opDouble;cout << "5 * 5 = " << opInt.peocess(5) <<endl;cout << "0.5 * 0.5 = " << opDouble.peocess(0.5) <<endl;
}

http://www.ds6.com.cn/news/73256.html

相关文章:

  • 网站交换链接怎么做宁波正规站内优化seo
  • 凡科的模板做网站巨量引擎广告投放平台官网
  • 社交网站cms优化网站推广教程排名
  • 云定制网站免费职业技能培训网站
  • 家庭网络组建方案自贡网站seo
  • 黑icp 网站建设竞价推广账户竞价托管公司
  • 网络架构1788aso优化什么意思
  • 共享ip做网站不能搜的超级恶心的关键词
  • 做二手房销售要开自己的网站吗网站赚钱
  • 网站建设技术网站建设企业推广方案
  • 高端建设网站公司写一篇推广商品的软文
  • 重庆制作网站有哪些武汉好的seo优化网
  • 夺宝网站建设产品宣传推广策划
  • 网站建设的主题哈尔滨百度推广联系人
  • 做信息网站能挣钱吗seo优化包括
  • 个人网站名称请专业的网页制作公司
  • 网站建设模板坏处海南百度推广总代理商
  • 怎么做扫二维码登陆网站企业网站seo排名优化
  • 学做宝宝衣服网站好推广平台都有哪些
  • 沐雪专业网站建设百度网盘账号登录入口
  • web程序员自己做网站58同城网站推广
  • 做网站seo优化总结百度引流推广怎么收费
  • 广西南宁房产网站建设seo公司后付费
  • 甘肃省环保建设申报网站惠州seo排名收费
  • 获取网站访问者qq号软文广告经典案例600
  • 网站建设需注意点东莞网站建设最牛
  • 炫酷网站首页公众号开发
  • 宝塔面板做网站百度网站的域名地址
  • 阳江网站制作公司百度网页版入口链接
  • 创想网站全国疫情最新报告