- 浏览: 39021 次
- 性别:
- 来自: 上海
最新评论
template是关键字,template之后是 模板形参表。模板形参表是用尖括号括住的一个或者多个模板形参的列表。
1.模板函数
template <typename T> //没有分号
[inline] int compare(const T &V1 ,const T &V2) //和上面的是一个语句
{
//do something
}
使用函数模板时,编译器会推断哪个(或者)那些模板实参绑定到模板形参,一旦编译器确定了实际的模板实参,就称它实例化了函数模板的一个实例。
compare(1,0);//初始化为int
2.模板类
template <class Type> class Queue
{
public:
Queue();
Type &front (); //return element from head of Queue
..........
}
与调用函数模板形成对比,使用类模板时,必须为模板形参显式制动实参。
Queue<int> qi; //Queue that holds ints
Queue< vector<double> > qc; //Queue that holds vectors of doubles
typename 与class的区别:
在函数模板形参表中typename和class具有相同的含义,可以互换使用。
template <typename T,class U> calc (const T&,const U&);
用typename更直观的指出后面是个类型名。
typename是作为标准C++的组成部分加入C++中的,因此旧的程序可能只用class.
3.在模板内部指定类型。
template <class Parm,class U>
Parm fcn(Parm* array ,U value)
{
Parm::size_type *p;
}
我们只能知道size_type是Parm的成员,但是我们不知道size_type是一个类型成员的名字还是一个数据成员的名字,在默认情况下,编译器假定这样的名字指定数据成员,而不是类型。
如果希望编译器将size_type当做类型,则必须显示告诉编译器这样做:
typename Parm::size_type *p;
在类型前用typename没有害处,因此,即使typename是不必要的,也没有关系。
以上都来自于c++primer
额,网上又看到typename和class的不同- -!有时间看看
http://dev.yesky.com/13/2221013.shtml
1.模板函数
template <typename T> //没有分号
[inline] int compare(const T &V1 ,const T &V2) //和上面的是一个语句
{
//do something
}
使用函数模板时,编译器会推断哪个(或者)那些模板实参绑定到模板形参,一旦编译器确定了实际的模板实参,就称它实例化了函数模板的一个实例。
compare(1,0);//初始化为int
2.模板类
template <class Type> class Queue
{
public:
Queue();
Type &front (); //return element from head of Queue
..........
}
与调用函数模板形成对比,使用类模板时,必须为模板形参显式制动实参。
Queue<int> qi; //Queue that holds ints
Queue< vector<double> > qc; //Queue that holds vectors of doubles
typename 与class的区别:
在函数模板形参表中typename和class具有相同的含义,可以互换使用。
template <typename T,class U> calc (const T&,const U&);
用typename更直观的指出后面是个类型名。
typename是作为标准C++的组成部分加入C++中的,因此旧的程序可能只用class.
3.在模板内部指定类型。
template <class Parm,class U>
Parm fcn(Parm* array ,U value)
{
Parm::size_type *p;
}
我们只能知道size_type是Parm的成员,但是我们不知道size_type是一个类型成员的名字还是一个数据成员的名字,在默认情况下,编译器假定这样的名字指定数据成员,而不是类型。
如果希望编译器将size_type当做类型,则必须显示告诉编译器这样做:
typename Parm::size_type *p;
在类型前用typename没有害处,因此,即使typename是不必要的,也没有关系。
以上都来自于c++primer
额,网上又看到typename和class的不同- -!有时间看看
http://dev.yesky.com/13/2221013.shtml
发表评论
-
指针 多维数组
2012-06-05 16:12 733这篇文章写的很好 http://www.cnblogs.com ... -
pImp
2011-11-08 17:24 882http://www.cnblogs.com/JulyZhan ... -
关于构造函数,析构函数,explicit等内容
2011-11-01 17:04 1226一.编译器会为我们做什 ... -
C语言标准
2011-10-21 12:11 12231.K&R C 1978年,丹尼斯·里奇(Dennis ... -
对话框工厂
2011-10-14 18:00 6741.对于工厂我的理解: 良好的封装性。使用和创建,初始化分开。 ... -
函数指针实现回掉函数
2011-10-14 17:47 972用法: 头文件中声明: DECL_LINK( Paintin ... -
typedef和指针结合
2011-10-14 17:42 8041. typedef (int *) pInt; 2.type ... -
const的理解和应用
2011-10-14 16:52 1333const的理解和应用 一.理解 const是一种语义上的约束 ... -
空指针的判断
2011-10-11 17:43 943请看NULL的定义: #if !defined(__cp ... -
GUN C 和 ANSI C的几个区别
2011-10-11 10:52 1114http://hi.baidu.com/deep_pro/bl ... -
浮点数的比较
2011-10-11 10:48 1249一浮点数的知识 1.首先浮点数不用补码表示,只有int型才用补 ... -
关于字符串倒转
2011-10-10 20:25 790有纯倒转,也有按单词为单位的。想做个总结 #inclu ... -
C数组和指针的区别
2011-10-10 19:25 729看《C专家编程》总结的的。 首先是个经典的例子: 一个文件定义 ... -
不用中间变量交换数据
2011-10-10 14:42 667那种加加减减的方法其实不对。因为缩小了数据范围。 a1=a1+ ... -
Quick Sort(快速排序)
2011-10-08 11:20 712Quick Sort算法描述如下: 假设S代表将被处理的序列 ... -
约瑟夫环的解答
2011-10-07 22:48 660http://blog.csdn.net/kittyjie/a ... -
Linux判断大小尾数(big-endian,little-endian)的方法
2011-10-07 22:12 1518static union { char c[4]; u ... -
c++基本文件操作
2011-09-30 00:28 782#include<iostream> #incl ... -
关于文件操作的头文件,类
2011-09-27 14:11 1103C++ 可以看这个 http://www.cplusplus. ... -
关于回车,换行,EOF
2011-09-26 17:41 2813回车换行: http://www.cnblogs.com/fa ...
相关推荐
C++模板是C++语言中的一个强大特性,它允许程序员创建泛型代码,即能够处理多种数据类型的代码。模板在C++中分为两种主要类型:函数模板和类模板。函数模板用于定义可以接受不同类型参数的函数,而类模板用于创建...
C++模板和STL库是C++编程语言中的两个核心特性,它们极大地提高了代码的复用性和效率。本文将深入探讨这两个主题,并提供丰富的实践应用示例。 首先,我们来理解C++模板。模板是C++的一个强大工具,它允许程序员...
C++模板是C++语言中的一个强大特性,它允许我们编写通用代码,实现代码复用,提高效率。在深入实践C++模板编程的过程中,我们不仅可以理解模板的基本概念,还可以掌握其高级特性和应用技巧。 首先,我们要理解模板...
《C++模板中文版》是一本深入探讨C++模板编程技术的专业书籍,旨在帮助读者全面理解和掌握这一核心的C++特性。C++模板是C++语言中的一个强大工具,它允许程序员创建泛型代码,实现代码重用和类型安全。在阅读这本书...
### C++模板元编程 #### 一、C++模板元编程概述 在现代软件开发领域,C++模板元编程(Template Metaprogramming)是一种利用C++编译器的类型系统来实现计算逻辑的技术。它允许程序员在编译时执行复杂的算法和数据...
《C++模板元编程技术与应用》是一本深入探讨C++模板元编程的书籍,旨在让更多的C++程序员了解并掌握这一技术,从而在编程过程中提高效率和代码质量。模板元编程是C++中一种强大的静态编译时编程技术,它允许程序员在...
C++模板元编程是一种在编译时执行计算和创建代码的技术,它利用了C++模板系统的能力,将编程任务从运行时转移到了编译时。模板元编程允许开发者编写更高效、更灵活的代码,特别是在处理类型系统和泛型算法时。在本...
C++模板是C++编程语言中的一个重要特性,它允许程序员创建泛型代码,实现代码复用,提升效率并保持灵活性。在"两本很好的讲解c++ template的书"中,我们可以期待深入理解模板的各个方面,包括基本概念、特性和最佳...
C++模板类是C++语言中的一个重要特性,它允许我们编写通用代码,这些代码可以用于处理不同类型的数据。模板类的出现使得程序员可以创建泛型(generic)容器、算法和其他工具,无需为每种数据类型单独编写代码。下面...
C++ 模板讲解习题及答案 C++ 模板是 C++ 编程语言中的一种非常重要的概念,它可以实现代码的复用和泛型编程。下面是 C++ 模板的主要知识点和考点: 1. 模板的概念 模板是指可以根据需要实例化出多种类型的函数或类...
C++模板详解 C++模板是C++编程语言中的一种重要机制,它允许开发者编写通用的函数和类,以适应不同的数据类型。模板的出现解决了函数重载的问题,使得代码更加简洁和灵活。本文将详细讲解C++模板的概念、声明、使用...
C++模板库是C++编程语言中的一个强大工具,它为程序员提供了高度抽象和泛化的代码复用机制。模板库主要包括三大部分:模板、标准模板库(STL)和元编程。在这里,我们将深入探讨C++模板库的基础知识,特别是STL的元素...
C++模板元编程是一种在编译时执行计算和构建类型的技术,它利用了C++模板的强大功能,将元数据(即关于数据的数据)处理提升到了一个新的层次。在C++中,模板不仅仅是用来创建泛型代码的工具,它们也可以被用作一种...
C++模板元编程是一种在编译时进行计算和代码生成的技术,它利用C++模板机制的强大功能,将元数据转化为可执行的代码。这一技术在提高程序效率、减少运行时开销、实现类型安全和静态多态等方面具有显著优势。在“C++...
C++模板是编程语言中的一个强大特性,它允许程序员创建泛型代码,即代码可以处理多种数据类型。这篇由侯捷等译的《C++ Templates:The Complete Guide》全面介绍了C++模板的各个方面,旨在帮助开发者更高效地利用这...
C++模板是C++编程语言中的一个重要特性,它允许程序员创建泛型代码,即能够处理多种数据类型的代码。模板在C++中分为两种主要类型:函数模板和类模板。通过使用模板,我们可以编写出更加通用、高效且易于维护的代码...
《数据结构:基于C++模板类的实现》是一本深入探讨如何使用C++语言来构建高效数据结构的书籍。在C++中,模板类是一种强大的工具,它允许我们编写通用的代码,适用于不同类型的对象,这在处理数据结构时特别有用。通过...