社区
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)应该连到哪一个上面去呢.....
...全文
166
6
打赏
收藏
很好奇的一个模板实例化的问题
template class Test { public: void a(T) { } void a(U) { } }; Test test; test.a(0); 这个时候 这个a(0)应该连到哪一个上面去呢.....
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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 ...
templatize:JavaScript
模板
库
最初,它需要
一个
非常简单的
模板
库,因此创建了自己的版本,然后才滚雪球(也只是出于
好奇
,对我的使用意愿)将其变成了功能强大的
模板
库。 劳伦斯·辛:copyright:2021 内容 用法 导入源代码或缩小的javascript。 ...
android-native-service-workshop
实作Android Native Service第 1 步:使用 ...第三步:声明LedService类物件的
实例化
将使用单例模式使用虚函数(多态) class LedService: public BnLedService{private: LedService(); virtual ~LedService();};
C++编程语言:抽象机制:第26章——
实例化
(Bjarne Stroustrup)
C++ 抽象机制:
实例化
C++
模板
的实现(
模板
函数和
模板
类,附带
模板
实现顺序表和链表代码)
模板
一、
模板
函数
模板
函数的格式: ... 当我们实现
一个
交换函数时,我们可以写成如下。 void Swap(int& x, int& y) { int tmp = x; x = y; y = tmp; } 这里只能交换两个整数...
C++ 语言
65,198
社区成员
250,522
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章