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(,,); cout<<"gradeBook1 created for course:"<< endl;
cout<< "The max value is:"<<maxValue<< endl;
std::cin.get();
return ;
}

输出结果:

c++ template怎么使用及注意事项的更多相关文章

  1. Data Guard相关参数学习介绍

    LOG_ARCHIVE_DEST_n 参数属性介绍 该参数的n在11g中为1到31,下列为参数的属性值: u  AFFIRM and NOAFFIRM u  ALTERNATE (not suppor ...

  2. kubernetes资源配置之ReplicaSets

    什么是ReplicaSets? ReplicaSet的目的是维护在任何给定时间运行的稳定的副本Pod集. 因此,它通常用于保证指定数量的相同Pod的可用性 ReplicaSets怎么样工作? Repl ...

  3. vue--综合组件间的通信

    二.综合组件之间的通信 实现一个ToDoList. ①完成所有的组件的创建和使用 ②add点击add按钮时候,将用户输入的内容(todoinput),显示在(todolist) 核心代码:兄弟组件间通 ...

  4. Go - template 常用方法详解 及 注意事项

    Go template包下面有两个函数可以创建模板实例 func New(name string) *Template func ParseFiles(filenames ...string) (*T ...

  5. weblogic安装注意事项_linux

    ➠更多技术干货请戳:听云博客 一.安装过程:参考“weblogic安装截屏(linux)” 注意事项:安装weblogic时,需要注意以下两点: 1.首先在安装目录下创建weblogic12文件夹 如 ...

  6. 【荐】PDO防 SQL注入攻击 原理分析 以及 使用PDO的注意事项

    我们都知道,只要合理正确使用PDO,可以基本上防止SQL注入的产生,本文主要回答以下几个问题: 为什么要使用PDO而不是mysql_connect? 为何PDO能防注入? 使用PDO防注入的时候应该特 ...

  7. Magicodes.WeiChat——自定义knockoutjs template、component实现微信自定义菜单

    本人一向比较喜欢折腾,玩了这么久的knockoutjs,总觉得不够劲,于是又开始准备折腾自己了. 最近在完善Magicodes.WeiChat微信开发框架时,发现之前做的自定义菜单这块太不给力了,而各 ...

  8. [转]PDO防注入原理分析以及使用PDO的注意事项

    原文:http://zhangxugg-163-com.iteye.com/blog/1835721 好文章不得不转. 我们都知道,只要合理正确使用PDO,可以基本上防止SQL注入的产生,本文主要回答 ...

  9. PDO防注入原理分析以及使用PDO的注意事项

    我们都知道,只要合理正确使用PDO,可以基本上防止SQL注入的产生,本文主要回答以下两个问题: 为什么要使用PDO而不是mysql_connect? 为何PDO能防注入? 使用PDO防注入的时候应该特 ...

随机推荐

  1. PHP file_get_contents函数读取远程数据超时的解决方法

    PHP file_get_contents函数读取远程数据超时的解决方法 投稿:junjie 字体:[增加 减小] 类型:转载   这篇文章主要介绍了PHP file_get_contents函数读取 ...

  2. QT学习之-HelloWorld

    实现HelloWorld有2种方法. 第一种在mainwindow.ui直接添加Label且写上“HelloWorld”. 第二种是代码直接实现 #include "mainwindow.h ...

  3. Front-end Developer Interview Questions

    Front-end-Developer-Interview-Questions A list of helpful front-end related questions you can use to ...

  4. 20145235 《Java程序设计》第8周学习总结

    教材学习内容总结 15.1.1日志API简介 使用日志的起点是logger类,logger实例的创建有许多要处理的要素,必须使用logger的静态方法getLogger(). 通常在哪个类上取得的lo ...

  5. jquery循环绑定事件

    <html> <head> <title></title> <script type="text/javascript" sr ...

  6. 使用Reveal

    添加Reveal.framework,设置Other link flags 添加Debug为 -ObjC,添加 libz 库 这里介绍 Reveal UI 分析工具的简单使用,至于使用他分析手机 Ap ...

  7. Bluetooth HCI介绍

    目录 1. HCI功能 2. HCI Packet 1. HCI Command 2. HCI Event 3. HCI Data 3. HCI传输层 HCI, 主机控制接口(Host Control ...

  8. Xcode Shortcuts

    Description:⌘: Command     ⌥: Option     ⌃: Control    ←↑↓→: Left, Up, Down, Right                  ...

  9. 字典型转换为JSON数据

    一)将NSDictionary转换成为NSData类型 NSDictionary *tempDict=[[NSDictionary alloc] initWithObjectsAndKeys:@&qu ...

  10. WCF 无法激活服务,因为它不支持 ASP.NET 兼容性。已为此应用程序启用了 ASP.NET 兼容性

    无法激活服务,因为它不支持 ASP.NET 兼容性.已为此应用程序启用了 ASP.NET 兼容性.请在 web.config 中关闭 ASP.NET 兼容性模式,或将 AspNetCompatibil ...