游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1962|回复: 2

显式具体化定义

[复制链接]

11

主题

30

帖子

30

积分

注册会员

Rank: 2

积分
30
发表于 2010-1-11 19:57:00 | 显示全部楼层 |阅读模式
大家好,最近在C++书上看到了一个新的知识点-显式具体化。没能理解其意义,于是按照书上的代码实验了下,在自己的编译器下没能通过。来请教下大家:

struct job {
     int num;
};

template<> void Swap<job>(job& j1, job& j2) {
     ……
}

这个定义是不是确定了模版内已经是结构体了?
还有编译发生了错误,是不是编译器版本的问题?我用的是VS2008
谢谢!!!

86

主题

2251

帖子

2384

积分

金牌会员

Rank: 6Rank: 6

积分
2384
QQ
发表于 2010-1-11 23:26:00 | 显示全部楼层

Re:显式具体化定义

模板特例化,举个例子。
比如你的模板函数叫Append
对于int、float等类型,因为有原生的+运算符,代码可以共用
对于你自定义的,没有+运算符方法的类型CYours,你没法直接用加号,没法和int、float的加法代码共用
这时,你就需要用特例化,单独给出一个针对CYours的Append函数。

你这个特例化的模板函数的前面,有非特例的Swap模板函数么?
特例化的前提,是编译器知道它是个模板。

0

主题

113

帖子

122

积分

注册会员

Rank: 2

积分
122
发表于 2010-1-15 15:05:00 | 显示全部楼层

Re:显式具体化定义

一个模版函数
template <class T> Add(T t1, T t2)
{
  return t1+t2;
}

int a = 1;
int b = 2;
int c = Add(a, b); // 这个不是显式的

int x = 1;
float y= 2.0f;
double z = Add<float>(x, y);  // 这个是显式的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-16 00:51

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表