Traits技法[终于解决]

扮演“特性萃取机”角色,萃取各个迭代器的特性(迭代器的相应类型)模板特例化:提供一份template定义式,而其本身仍为templatization通过classtemplatepartial

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

全栈程序员社区此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“全栈程序员社区”或者“www_javaforall_cn”或者微信扫描右侧二维码都可以关注本站微信公众号。

扮演“特性萃取机”角色,萃取各个迭代器的特性(迭代器的相应类型)

模板特例化:提供一份template定义式,而其本身仍为templatization

通过class template partial specialization的作用,不论是原生指针或class-type iterators,都可以让外界方便地取其相应类别

原生指针不是class type,如果不是class type就无法为它定义内嵌型别。但模板特例化解决了该问题

  template<class T>

  class C{…};    // 这个泛化版本允许(接受)T为任何型别

  template<class T>

  class C<T*>{…}; // 这个特化版本仅适用于“T为原生指针”的情况

  

#pragma once

template <class T>
class MyIter
{
public:
	MyIter(T *p = 0):ptr(p){}
	MyIter(MyIter<T> &ths):ptr(ths.ptr){}
	T& operator*(){return *ptr;}

	typedef T value_type;

private:
	T *ptr;	
};


// Partial Specialization 偏特化
template <class T>
struct iterator_traitse
{
	typedef typename T::value_type value_type;
};

template <class T>
struct iterator_traitse<T *>
{
	typedef T value_type;
};

template <class T>
typename iterator_traitse<T *> :: value_type fun(T ite)
{
	return ite;
}

int main()
{
	MyIter<int> ite(new int(8));
	
	// cannot convert from 'MyIter<T>' to 'int'
	int n = fun(ite);

     MyIter<int> p = fun(ite);
return 0; }

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120234.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java课程设计源码——学生信息管理系统 SQL「建议收藏」

    Java课程设计源码——学生信息管理系统 SQL「建议收藏」packageshujuku;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.util.*;importjava.sql.*;importjavax.swing.table.*;classallstudentextendsJFrameimplementsAct…

    2022年10月15日
    6
  • 业务流程引擎_业务流程管理

    业务流程引擎_业务流程管理一般的时候,我们都采用编程式开发,编程式开发的好处非常明显:直接、高效、自由,当然其缺点也是有的,与其优点刚好相对,因为直接,所以有些变化都要进行代码上的修改;因为高效,所以一旦出问题,导致的结果也比较严重,因为自由,所以带来的修改风险也比较大。  这也就是许多大的公司都在进行流程化开发的重要原因之一,比如:上海普元,Livebos,Justep,还有许许多多知名不知名的公司都有类似的流程化开发

    2022年9月25日
    4
  • 从零开始学习UCOSII操作系统13–系统移植理论篇「建议收藏」

    从零开始学习UCOSII操作系统13–系统移植理论篇「建议收藏」从零开始学习UCOSII操作系统13–系统移植理论篇1、什么是系统移植?(1)UCOSII移植到不同的处理器上,所谓的移植就是将一个实时的内核能在其他的微处理器或者微控制器上运行。为了方便移植,UCOSII的大部分的代码都是C语言写的,因为不同机器的汇编代码是不一样的。这是由于UCOSII在设计的时候已经充分考虑到了可移植性这一点。但是仍然有一部分的代码是需要用C语言

    2022年5月4日
    41
  • sql中的判断语句 if…else的使用[通俗易懂]

    sql中的判断语句 if…else的使用[通俗易懂]–1.oracle和mysql数据库都可以这样写CASEWHEN(RO.APPROVE_QUANTITY-NVL(tto.QUANTITY,0))<0THEN0ELSE(RO.APPROVE_QUANTITY-NVL(tto.QUANTITY,0))ENDsurplusQuantity--注意:NVL()是oracle数据库中对字段的非空校验,如果字段名为

    2022年7月16日
    34
  • filereaderror_InputStreamReader

    filereaderror_InputStreamReader今天梳理IO笔记时发现一个问题–FileReader是鸡肋吗,它有用吗???在使用字符流读取文本文件时(且不使用包装流时),有两种类提供读取文件方法,分别是InputStreamReader和FileReader,后者为前者子类。引言–当文本文件编码与编译工具默认编码不同时,FileReader类的方法读取文件会出现乱码的情况,这时需要用到转换流InputStreamReader的InputStreamReader(InputStreamin,StringcharsetName)方法。作为转换

    2022年9月25日
    4
  • cpu缓冲区大小怎么设置_FL Studio中音频ASIO4ALL的设置

    cpu缓冲区大小怎么设置_FL Studio中音频ASIO4ALL的设置上期我们讲解了FLStudio中音频的相关设置,今天我们来进一步讲解音频设置中的ASIO4ALL的设置,FLStudio安装包括FLStudioASIO和第三方ASIO驱动程序ASIO4ALL,那么大家是否知道ASIO有什么优点吗?速度优势:ASIO驱动程序(通常)允许比标准Windows(“主声音驱动程序”,WDM驱动程序)更低的CPU开销和更低的缓冲区设置。如果您的音频设备具有本机AS…

    2022年5月21日
    67

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号