C++ 基础函数模板、模板的 模板参数列表、模板参数列表中的类型模板参数 与 非类型模板参数

// ConsoleApplication20.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "iostream"
using namespace std;

//-- <>尖括号内是模板参数列表,模板参数列表中可以定义 类型参数,在这里T就是类型模板参数
template<typename T>
T addNum(T a, T b){
	return a + b;
}
//-- <>尖括号内是模板参数列表,模板参数列表中可以定义 非类型参数,在这里int a, int b就是非类型模板参数
template<int a, int b>
int addNum2(){
	return a + b;
}
template<int a, int b, typename K>
inline int addNum3(K k){
	return a + b + k;
}
int _tmain(int argc, _TCHAR* argv[])
{
	//-- 模板是泛型编程的基础
	addNum(1, 2);  //--编译器推断类型模板参数
	addNum(1.2, 3.2);
	//-- 在 <> 内指定模板参数,在这里的非类型模板参数 必须是 常量表达式, 值必须是在编译的时候就能确定,因为实例化模板是在 编译的时候做的事。
	cout << addNum2<11, 12>() << endl; //--用户提供 非类型模板参数

	//-- 系统会以传进<>的int类型为准,而不是以1000.0推断出来的类型为准
	cout << addNum3<2, 3, int>(1000.1) << endl; //--用户提供类型模板参数 和 非类型模板参数
	return 0;
}
//-- 函数模板的定义并不会导致编译器生成相关代码,只有在调用这个函数模板时,编译器才会实例化一个特定版本的函数并 生成函数相关代码。
//-- 编译器生成代码的时候,需要能找到模板的函数体部分,所以函数模板的定义通常是放在.h文件中

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值