泛型的作用

以前学习C、C++时没有接触过这一个概念,后来学习Java时,提出了这么一个名词,感觉好新鲜,但自己并没有认真研究过,更不要说用来写一个具体应用。

这些天要做一个将C#代码转换成C++代码的工作,由于自己学习的C++不够标准化(一般应用工具),为也防止自己写出不标准的C++代码,特意下载了powerdesigner来生成C++框架,但源码中使用到了泛型,据说C++中有一个类似的功能叫模板,但是对这些都不怎么了解,所以在网上查了一下,找出其特点方便了解。

以下是个人理解:

泛型就像是一个集合,其中包括了多种类型,可以使用泛型来定义不同类型的相同操作。有点类似面向对象中所说的,类的成员函数只有一份COPY,在同一个框架中通过改变类型来达到对不同类型的操作,而且不用关心类型转换等问题。

泛型也有点像面向对象语言中的Object(所有类的父类),但是其不用关心类型转换等问题,而普通的Object类就可能要考虑转换等问题。

 

在网上找到这么一个代码例子,是没有用泛型,但却是为了达到泛型的效果

interface Collection 
{ 
    public void add (Object x); 
    public Iterator iterator (); 
} 

interface Iterator 
{ 
    public Object next (); 
    public boolean hasNext (); 
} 

class NoSuchElementException extends RuntimeException {} 

class LinkedList implements Collection 
{ 
    protected class Node 
    { 
        Object elt; 
        Node next = null; 
        Node (Object elt)
         { 
             this.elt = elt; 
        } 
    } 
    protected Node head = null, tail = null; 
    public LinkedList () {} 
    public void add (Object elt) 
    { 
        if (head == null) 
        { 
            head = new Node(elt); 
            tail = head; 
        } 
        else 
        { 
            tail.next = new Node(elt); 
            tail = tail.next; 
        } 
    } 
    public Iterator iterator () 
    { 
        return new Iterator () 
        { 
            protected Node ptr = head; 
            public boolean hasNext () 
            { 
                return ptr != null; 
            } 
            public Object next () 
            { 
                if (ptr != null) 
                { 
                    Object elt = ptr.elt; 
                    ptr = ptr.next; 
                    return elt; 
                } 
                else 
                    throw new NoSuchElementException (); 
            } 
        }; 
    } 
}  

这个就是没有利用泛型而达到类似泛型效果的JAVA代码,在C++中同样可以达到这种效果,但标准C++中没有一个所有子类的父类,所以要达到这一效果,应该要事先定义一个父类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鯎鯎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值