大胖的部落格
Just a note
C++博客
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
112 随笔 :: 0 文章 :: 3 评论 :: 0 Trackbacks
<
2009年6月
>
日
一
二
三
四
五
六
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
留言簿
给我留言
查看公开留言
查看私人留言
随笔分类
Algorithm(13)
(rss)
C#(13)
(rss)
C++(22)
(rss)
Design Pattern(23)
(rss)
Others(14)
(rss)
STL(9)
(rss)
Technical(2)
(rss)
UML(2)
(rss)
Win32(18)
(rss)
Reference
Windows XP command line
最新评论
1. re: 在TCL命令行中调用C函数
@Kenny
实在不好意思,时间太过久远,本人已好久没有接触TCL……
--大胖
2. re: 在TCL命令行中调用C函数
請問如何溝通array 變數
Q:1
tcl array in C
Q:2
C array in tcl
懇求指導
--Kenny
3. re: 在TCL命令行中调用C函数
谢谢!
--1232
template
模板类型参数前的关键字可以为typename和class。
函数模板定义如下:
//
i是非类型参数,编译时被求值
template
<
typename U,
class
T
>
U Add(U u, T t,
int
i)
{
return
u
+
t
+
i;
}
int
i
=
3
;
char
c
=
4
;
int
r
=
Add(
3
,
4
,
6
);
//
模板实例化,隐式的
cout
<<
r
<<
endl;
类模板
#include
<
iostream
>
using
namespace
std;
//
i是非类型参数,
//
模板支持缺省参数
template
<
typename U
=
int
,
int
i
=
8
>
class
A
{
public
:
A():value(i)
{}
U GetValue()
{
return
value;}
void
SetValue(U u);
private
:
U value;
}
;
//
类模板的成员函数定义
template
<
typename U,
int
i
>
void
A
<
U, i
>
::SetValue(U u)
{
value
=
u;
}
int
main()
{
A
<>
b;
//
A<>是一个用缺省模板参数实例化的模板类
cout
<<
b.GetValue()
<<
endl;
A
<
int
,
6
>
a;
cout
<<
a.GetValue()
<<
endl;
a.SetValue(
3
);
cout
<<
a.GetValue()
<<
endl;
return
0
;
}
模板实例化发生在编译期,如下是一个应用:
有这么一组数列1,1,2,3,5,8,13,21……最前一,二项是1,以后每一项是其前两项的和。计算第N项的值。
#include
<
iostream
>
using
namespace
std;
//
类模板定义
template
<
int
n
>
class
f
{
public
:
enum
{value
=
f
<
n
-
1
>
::value
+
f
<
n
-
2
>
::value}
;
}
;
//
类模板特化
template
<>
class
f
<
1
>
{
public
:
enum
{value
=
1
}
;
}
;
//
类模板特化
template
<>
class
f
<
2
>
{
public
:
enum
{value
=
1
}
;
}
;
//
函数
long
F (
long
n)
{
if
(n
==
1
||
n
==
2
)
{
return
1
;
}
else
{
return
F(n
-
1
)
+
F(n
-
2
);
}
}
int
main()
{
//
编译期求值
cout
<<
f
<
45
>
::value
<<
endl;
//
运行期求值
cout
<<
F(
45
)
<<
endl;
return
0
;
}
程序的输出第一行很快,因为编译期求值,后一行函数调用运行期求值。
posted on 2009-06-12 15:26
大胖
阅读(154)
评论(0)
编辑
收藏
引用
所属分类:
C++
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
补码
带引用计数的智能指针(模板类)
虚基类、虚函数,对象内存分布
template
override, overload, hide
继承
基类中的虚函数
继承关系中的二义性
虚基类
C/C++关键字
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
Powered by:
C++博客
Copyright © 大胖