社区
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)应该连到哪一个上面去呢.....
...全文
190
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个函数里加打印,执行一下嘛。
举手之劳,为啥不自己试?
【求助】定义
一个
类包装查询到的数据,用modelMap返回,thymeleaf接收不到报错
需要查询
一个
用户的id,头像,用户名,以及当前用户的在线状态 因为用户表里没有在线状态,而且这是需要随时变动的,所以就定义了
一个
类包装一下这些数据 public class ChatNow { private Integer userId;/*聊天对象的id*/ private String account;/*聊天对象的账号*/ private String hea...
【Java设计模式】
好奇
递归
模板
模式(CRTP):独特地利用多态性
在Java中,
好奇
递归
模板
模式(CRTP)是一种强大的设计模式,用于实现静态多态性。通过让
一个
类
模板
从其自身类的
模板
实例化
中派生,CRTP能够实现方法重写和编译时的多态行为,提高Java应用程序的效率和性能。
crtp_使用
好奇
重复
模板
模式(CRTP)的静态多态
crtp 继承是代码重用最常用的方法之一。 面向对象语言致力于继承以收集基类中的通用功能。 什么是多态? 从stackoverflow : 如果您考虑该术语的希腊语根源,应该会很明显。 聚=许多:多边形=多面的,聚苯乙烯=许多苯乙烯(a),杂色=许多语言,等等。形态=改变或形式:形态=研究生物学形式,莫非斯=希腊梦中的神任何形式。 因此,多态性是(在编程中)针对不同底层形式(...
使用
好奇
重复
模板
模式(CRTP)的静态多态
继承是代码重用最常用的方法之一。 面向对象语言致力于继承以收集基类中的通用功能。 什么是多态? 从stackoverflow : 如果您考虑该术语的希腊语根源,应该会很明显。 聚=许多:多边形=多面的,聚苯乙烯=许多苯乙烯(a),多种语言=许多语言,等等。形态=改变或形式:形态=研究生物学形式,莫非斯=希腊梦之神任何形式。 因此,多态性是(在编程中)针对不同底层形式(数据类型)呈现相同...
[C++]——学习
模板
学习
模板
C++ 语言
65,213
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章