C++模板

原创 2016年08月30日 13:16:29

C++模板主要解决类型多态,对于定义和使用的话,其实也是很简单的理解

简单写了两个示例


一、函数模板

假如我需要计算两个值相加,但可能会传入float或者int等不同类型的值,

以往我们回考虑到各种情况,可能会写几个重载函数来解决这个问题,

现在可以使用模板函数,正好也解决写一些多余的代码啊,具体如下

#include "stdafx.h"
#include <iostream>

/*
template为模板声明,
<>里为模板参数列表,不能为空,可以多个
如果需要在其他地方定义或者需要再函数类再定义一个类型,编译器不是能识别的,是需要用typename再次声明
*/
template<typename T> //这里的typename也可以用class代替,为了与类模板混淆,才有了typename,其实都一样
T AddNum(T Num01, T Num02)
{
	return Num01 + Num02;
}

int main()
{
	std::cout << "int add:@@ " << AddNum(10, 23) << std::endl;
	std::cout << "float add:@@ " << AddNum(16.0f, 3.0f) << std::endl;
	while (true)
	{}
    return 0;
}

二、类模板

类模板如果说到vector或者list,其实就更好理解了,基本上都属于常用的东西

我这里就简单输出了一串字符

#include "stdafx.h"
#include <iostream>

/*
template为模板声明
class与typename一样,
其他都一样,需要定义为不确定类型,用typename/class声明一下
在类体外实现函数或初始化变量,且他们都带模板变量的话,需要在使用的地方再次声明一遍
*/
template <class T>
class PrintT
{
public:
	T Value;
};

int main()
{
	PrintT<char*>* pt = new PrintT<char*>();
	pt->Value = "test print";

	std::cout << "char print:@@ "<<(pt->Value)<<std::endl;
	while (true)
	{}
    return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

线段树模板--C++

无合并/* adrui's Segment Tree *///无区间合并的区间更新 & 查询 const int N = 100000 + 5;int ans[N << 2], lazy[N <> ...
  • ADjky
  • ADjky
  • 2016-12-21 19:25
  • 344

C++模板插入排序

插入排序的C++模板实现

C++模板类实现“堆”的经典案例学习+(优先队列)

本文转自:《C++程序设计》   Y. Daniel  Liang著  王刚,刘晓光,刘璟 译, 机械工业出版社             ...

AC自动机模板(c++版和java版)

这是我第一次写博客,可能整理的不好,请大家见谅。         先发一些我最近在刷的AC自动机的题,模版题我就不发了。。初学的话,可以看一下 AC自动机算法 - 飘过的小牛 - 博客频道 - CSD...

Step By Step(C++模板重载和特化)

转自:http://www.cnblogs.com/stephen-liu74/archive/2012/08/06/2625195.html 一、模板函数重载:     函数...

C++模板(一)

模板的目的:为了实现代码的复用性。 我们可以理解“模板”其实就是一栋建造好但还未装修的楼,装修就是我们需要的类型(int, char, string, float, 自定义类型等),当楼房装修好就可...

数据结构(C++)----单链表模板类

所有的文件都在List.h文件下#ifndef LIST_H #define LIST_H #include #includeusing namespace std;template class Li...

在C++中通过模板规避潜在错误

注:本文节选自我正在创作的第二本书《C++跨平台与框架开发》,其中一些措词并未就博文进行调整,阅读时请注意。   模板(template)为C++带来了泛型编程的能力,但也带来了使用难度。大体上,...

C++中vector模板详解

1. 在C++中的详细说明 vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。 vector之所以被认为是一个容器,是因为它能够像容器一样存...

C++模板(一)

C++模板   模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。   模板是一种对类型进行参数化的工...
  • pcjhm
  • pcjhm
  • 2016-08-06 22:16
  • 44
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)