您的位置:首页 > 编程语言 > C语言/C++

c++ template怎么使用及注意事项

2014-05-11 18:33 197 查看
c++ 中的template和c#的什么有点相似?

先看下定义方式:

template <typename|class T>
T myFunction(T param1,T param2...)
{
T result= param1;
// do something

return result;
}


一看到这个定义方式,就想起来c#中的泛型:

List<T>
List<int> item=new List<int>();
KeyValuePair<T,T>
Dictionary<T,T>
Dictionary<int,string> dict=new Dictionary<int,string>();
Func<in T...,out T>
Action<in T...,out void>
&&


其实,他们的用法和作用上都是很相似的.

使用之前,我们先看下使用注意事项:

1.如果你新建的工程是分空Console,请注意要把#include "stdafx.h"放在文件(头文件,资源文件)第一行,否则,不管是模板还是其他都地方都会编译失败;

2.使用模板时,template<typename|class T> 声明行同使用T的函数之间不允许出现其他代码行,最好也不要空行(没有验证有空行是否会编译失败)。

使用示例

工程文件结构:



注:

Templates.h---模板定义

ConsoleApplication1.cpp---main入口函数文件

Templates.h中代码:

#include "stdafx.h"

#include <iostream>

template< class T >
T myFunc(T first,T second,T third)
{
T maxValue=first;

if(second>maxValue)
{
maxValue=second;
}

if(third>maxValue)
{
maxValue=third;
}

return  maxValue;
};


ConsoleApplication1.cpp 调用代码:

#include "stdafx.h"

#include <iostream>
using std::cout;
using std::endl;

#include <conio.h>
#include "Templates.h"

int _tmain(int argc, _TCHAR* argv[])
{
int maxValue=myFunc(1,3,10);

cout<<"gradeBook1 created for course:"<< endl;
cout<< "The max value is:"<<maxValue<< endl;
std::cin.get();
return 0;
}


输出结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: