社区
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)应该连到哪一个上面去呢.....
...全文
163
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):独特地利用多态性
在Java中,
好奇
递归
模板
模式(CRTP)是一种强大的设计模式,用于实现静态多态性。通过让
一个
类
模板
从其自身类的
模板
实例化
中派生,CRTP能够实现方法重写和编译时的多态行为,提高Java应用程序的效率和性能。 ## 二、
好奇
递归
模板
模式的别名 * CRTP * Mixin Inheritance(混入继承) * Recursive Type Bound(递归类型边界) * Recursive Generic(递归泛型) * Static Polymorphism(静态多态性) ## 三、
好奇
递归
模板
模式的意图
好奇
递归
模板
模式(CRTP)的意图是在Java中实现静态多态性。通过让
一个
类
模板
从其自身类的
模板
实例化
中派生,CRTP能够实现方法重写和编译时的多态行为,增强Java应用程序的效率和性能。 ## 四、
好奇
递归
模板
模式的详细解释及实际示例 1. **实际示例**: - 考虑
一个
图书馆系统管理各种类型的媒体:书籍、DVD和杂志。每种媒体类型都有特定的属性和行为,但它们都共享一些共同的功能,如借阅和归还。通过在Java中应用
好奇
递归
模板
模式(CRTP),可以创建
一个
基本的
templatize:JavaScript
模板
库
模板
化 基本的
模板
代码。 最初,它需要
一个
非常简单的
模板
库,因此创建了自己的版本,然后才滚雪球(也只是出于
好奇
,对我的使用意愿)将其变成了功能强大的
模板
库。 劳伦斯·辛:copyright:2021 内容 用法 导入源代码或缩小的javascript。 如果是常规脚本导入,请使用名称Templatize 。 最基本的用例将只调用Templatize.render()函数。
模板
化。 渲染(
模板
,绑定[,选项]) 姓名 类型 描述 template 细绳
模板
。 bindings 目的 数据绑定的对象文字。 options 目的 查看。 返回: (String)呈现的
模板
。 但是,这将不会利用缓存已处理的
模板
的优势。 如果重新使用
模板
,请首先使用Templatize.from()从该
模板
克隆
一个
渲染实例,然后在该Templatize.from()调用render函数。 使用此处的选项,您可以
gotemplate:Go的基于包的
模板
系统
转到
模板
该工具使用需要go 1.4的“ go generate”来管理Go语言的基于包的
模板
。 安装 使用go get安装 go get github.com/ncw/gotemplate/... 这将在$GOPATH/bin构建gotemplate二进制文件。 它还会提取一组
模板
,您可以立即开始使用 使用
模板
要使用
模板
,首先必须在代码中使用特殊注释告诉gotemplate您要使用它。 例如 //go:generate gotemplate "github.com/ncw/gotemplate/set" mySet(string) 这告诉go generate运行gotemplate ,并且您想要将set template与string类型参数和本地名称mySet 。 现在,在没有参数的代码目录中运行go generate 。 这会将
模板
实例化
到名为gotemplate_mySet
cloudformation-template:用于在 Amazon Web Services 上引导 Pivotal Cloud Foundry Ops Manager 的 cloudformation
模板
不使用。 我们正在取代它。 用于在 Amazon Web Services 上引导 Pivotal Cloud Foundry Ops Manager 的 cloudformation
模板
android-native-service-workshop
实作Android Native Service 第 1 步:使用 BnInterface
模板
Native service的server使用BnInterface
模板
class BnLedService: public BnInterface
{ }; 第二步:声明ILedService并扩展框架 ** 将 ILedService 扩展 (extend) 至 Android Framework class ILedService: public IInterface { }; 第三步:声明LedService类 物件的
实例化
将使用单例模式 使用虚函数(多态) class LedService: public BnLedService { private: LedService(); virtual ~LedService(); };
C++ 语言
65,189
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章