社区
C++ 语言
帖子详情
很好奇的一个模板实例化的问题
DraculaW
2007-08-14 04:15:21
template<typename T, typename U>
class Test
{
public:
void a(T)
{
}
void a(U)
{
}
};
Test<int, int> test;
test.a(0);
这个时候 这个a(0)应该连到哪一个上面去呢.....
...全文
169
6
打赏
收藏
很好奇的一个模板实例化的问题
template class Test { public: void a(T) { } void a(U) { } }; Test test; test.a(0); 这个时候 这个a(0)应该连到哪一个上面去呢.....
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fish6344
2007-08-14
打赏
举报
回复
对于你的如下代码:
template<typename T, typename U>
class Test
{
public:
void a(T){}
void a(U){}
};
在编译器未检索到有使用该模板的代码以前,编译器将不作实例化,仅作语法检测。
编译器检索到:
Test<int, int> test;语句时,开始具现出该模板的实体如下:
template<typename int, typename int>
class Test
{
public:
void a(int){}
void a(int){}
};
等同于你有如下声明:
class Test
{
public:
void a(int){}
void a(int){}//编译时错误,函数名'a(int)'重定义!
};
相信你也意识到了错误的原因。所以如下语句:
test.a(0);
根本不存在绑定那一个的问题!
关键是,对于非模板类,编译器在类声明的结束处(最后一个’}’处),就开如决义具现出类声明实体,而对于类模板这个操作要推迟到使用的时候才具现出类声明实体。
DraculaW
2007-08-14
打赏
举报
回复
这个应该编译通不过
因为 会对Test这个函数定义两次....
不知道标准或者什么上面有说法没有
珍惜生命远离CPP
2007-08-14
打赏
举报
回复
g++
error: `void Test<T, U>::a(U) [with T = int, U = int]' and `void Test<T, U>::a(T) [with T = int, U = int]' cannot be overloaded
DraculaW
2007-08-14
打赏
举报
回复
当然没有通过啊 所以我才来问问...
loops
2007-08-14
打赏
举报
回复
你在哪个编译器上编译通过了?
taodm
2007-08-14
打赏
举报
回复
自己编译试一下嘛。
如果能编译过的话,你在2个函数里加打印,执行一下嘛。
举手之劳,为啥不自己试?
【Java设计模式-源码】
好奇
递归
模板
模式(CRTP):独特地利用多态性
通过让
一个
类
模板
从其自身类的
模板
实例化
中派生,CRTP能够实现方法重写和编译时的多态行为,提高Java应用程序的效率和性能。 ## 二、
好奇
递归
模板
模式的别名 * CRTP * Mixin Inheritance(混入继承) * Recursive ...
C++编程语言:抽象机制:第26章——
实例化
(Bjarne Stroustrup)
C++ 抽象机制:
实例化
C++
模板
的实现(
模板
函数和
模板
类,附带
模板
实现顺序表和链表代码)
模板
一、
模板
函数
模板
函数的格式: ... 当我们实现
一个
交换函数时,我们可以写成如下。 void Swap(int& x, int& y) { int tmp = x; x = y; y = tmp; } 这里只能交换两个整数...
【Java设计模式】
好奇
递归
模板
模式(CRTP):独特地利用多态性
在Java中,
好奇
递归
模板
模式(CRTP)是一种强大的设计模式,用于实现静态多态性。通过让
一个
类
模板
从其自身类的
模板
实例化
中派生,CRTP能够实现方法重写和编译时的多态行为,提高Java应用程序的效率和性能。
unity
实例化
预制体_Unity:预制
实例化
,使其移动并设置速度
unity
实例化
预制体 Unity:预制
实例化
,使其移动并设置速度 (Unity: Prefab Instantiation, making it move and setting speed) Of course, we can put instantiation to much better uses. Let's try firing a ...
C++ 语言
65,206
社区成员
250,519
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章