c类具体化,c++ 模板类具体化 100

2020-11-26 08:58:51 字数 3498 阅读 4771

1楼:gta小鸡

最简单的做法是在模板类中定义一个同名的重载函数swap(char* &a, char* &b);。编译器的原则是先匹配具体函数后匹配模板函数,所以当t为char*类型时会调用该swap函数而不是模板swap函数。

2楼:匿名用户

首先这叫特例化,不叫具体化... 你说具体化我一直以为你要实例化...

你完全可以另外提供比较的功能,而不是直接把比较写到sort里面去。

c++模板类成员函数部分具体化 20

3楼:匿名用户

给你一个问题,名称之名称有何奥妙?

模板名称是什么样子的呢。

对于templateclass knap,它的某个具体使用应该是knap,而不是你以为的knap,如果typew默认为int不会产生什么负面的影响,你可以templateclass knap(应该可以这样,没尝试了);如果必须针对性写一个不同版本的knap,你应该写成:

templateclass knap;

这个模板是2个类型参数,并不是一个类型参数。

4楼:匿名用户

template

class knap // 我就看出这里少个分号

c++ 模板具体化

5楼:匿名用户

你说的不是模板的具体化,而是模板的特化或者偏特化,在这道题里就是模板的特化。

比如#include

#include

usingnamespacestd;

constintlim=5;

template

tmaxn(ta,intn)

intmain()

,a1;

doubleb[4]=,b1;

a1=maxn(a,6);

b1=maxn(b,4);

stringss=;

stringstr=maxn(ss,10);

cout<

当然我的特化不是针对你的题目的,只是随便举了个例子如果还有不懂的地方,建议看c++ primaer的“模板与泛型编程”那一章,讲解很详细。

6楼:匿名用户

具体化时,模板函数会根据你所传参数的类型来匹配t类型,就是说你传的参数类型会在模板函数中替代t

c++函数模板具体化const类型 10

7楼:折柳成萌

你说的不是模板的具体化,而是模板的

特化或者偏特化,在这道题里就是模板的特化。

比如#include

#include

using namespace std;

const int lim=5;

template

t maxn(t a,int n)

int main()

,a1;

double b[4]=,b1;

a1=maxn(a,6);

b1=maxn(b,4);

string ss = ;

string str = maxn(ss, 10);

cout<

cout<

cout << str << endl;

system("pause");

return 0;}

c++函数模板的显示实例化和显式具体化是什么。?解释下 这个例子

8楼:匿名用户

template

voidfun(aa){}

template<>

voidfun(inta)//显式具体化voidmain()

c++中类模板怎样实例化对象是类类型 给个简单的例子说明一下!!

9楼:匿名用户

template

class mydata

;void main()

c++带有模板的类,它的方法只能实现在.h里吗?

10楼:匿名用户

也不是只能放在.h里面,但是推荐放在.h里面。stl模板实现全部是放在.h里面的。

------------------

编译能通过。

1)参与编译的只是.cpp文件,不会报错的原因,是因为它能在.h里面找到模板的声明。

链接错误。

1)链接的时候,需要实例化模板,这时候就需要找模板的具体实现了。假设在main函数中调用了一个模板函数,这时候就需要去实例化该类型的模板。注意main函数里面只包含了.

h文件,也就是只有模板的声明,没有具体实现。就会报错。

2)而模板的实现.cpp里面,虽然有模板的具体实现,但是没有谁在该.cpp里面使用一个模板函数,就不会生成一个具体化的实例。

ps:模板是在需要的时候,才会去生成一个具体化的实例的,比如,你只要一个int型的实例,模板就只会给你生成一个int型的实例,模板本身是不会被执行的(也就是模板本身不产生汇编指令),是模板生成的具体化实例才产生指令(这个实例是隐藏的,我们是看不到的)

解决方案:

1)将模板实现写在.h里面

2)如果你非要写在.cpp里面,那么请在模板实现的.cpp文件里面(或者.

h里面)显式的实例化一个模板。如果是这样的话,那模板就没有太大的意义了,难道你去自己手动实例化所有的实例?

11楼:匿名用户

不能链接

.h 显然不是只给这一个 .cpp 文件用的。

在编译这个 .cpp 文件的时候根本不知道 要用哪些模板参数实例化这个模板;在编译其他 包含这个 .h 文件、并且使用了 idgenerator 的 .

cpp 文件的时候,告诉了编译器要用哪些模板参数实例化这个模板,但是又不知道如何实例化这个模板

12楼:匿名用户

是的,只能在头文件中。c++不会直接编译模板自身,它需要根据使用的情况,生成一些**,再编译这部分**。

“转到声明”这是ide的能力,不是c++语言本身的概念,与链接无关。

c++模板类有什么作用

13楼:匿名用户

c++模板的作用就是你不确定该模板要用到什么类型,可以是原有类型,也可以是自己定义的类等.通常把一个东西用于多处不同类型的地方,就需要建立该东西的模板.比如说你有一个模具(相当于模板),然后你需要蓝色的,所以用该模具做出蓝色的东西,接着你又需要红色的,然后再用该模具做出红色的东西.

可见模板是可复用的.通过不同的类型就给出该模板的实例化.希望我讲的能让你明白.

详细的可自行参考相关书籍课本等.至于声明方式用法注意点等都去看看书吧.

14楼:匿名用户

编译期间多态,编译期间断定,编译期间检查,编译期间识别,。。。

反正一切都在编译的时候做

C++函数的显示实例化和显式具体化是什么。?解释下这个

1楼 匿名用户 template void fun a a template void fun int a 显式具体化void main 谁能帮我解释下c 函数模板显示实例化? 2楼 物理公司的 template void fun a a template void fun int a 显式具体化v...