zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C++ and Java template class and function 模板类和模板函数

JAVAC++模板 函数 and Class Function Template
2023-09-11 14:21:39 时间

 

在C++和Java的泛式编程中,模板template的使用是必不可少的,但是Java中没有template关键字,所以两者的写法还是有些许区别的,请参见如下代码:

 

Java的模板

// Java
public class Cell<K, V> {
    private K _key;
    private V _value;
    public Cell(K k, V v) {
        _key = k;
        _value = v;
    }
    public boolean equivalent(Cell<K, V> c) {
        return equivalent(c.getKey());
    }
    public boolean equivalent(K k) {
        return key.equals(k);
    }
    public K getKey() { return _key; }
    public V getValue() { return _value; }
}

 

C++的模板

// C++
template<typename K, typename V>
class Cell{
public:
    Cell(K k, V v): _key(k), _value(v) {}
    bool equivalent(Cell *c) {
        return equivalent(c->getKey());
    }
    bool equivalent(K k) {
        return _key.equals(k);
    }
    K getKey() { return _key; }
    V getValue() { return _value; }

private:
    K _key;
    V _value;
};

 

由上面的实例我们可以看出C++和Java在使用模板template写法上的不同,对于同一个类的两种语言的实现的对比,我们也能观察到一些C++和Java的其他不同之处:

1. Java对于每个变量或函数分别定义public还是private,而C++是分区的

2. Java里不存在指针的概念,和C++的一大重点就是指针