C++中的模板与泛型编程学习

本文介绍了C++中的模板编程,包括函数模板和类模板的定义与使用,并对比了运行时多态性和编译时多态性。此外,还讨论了Java中的泛型编程是如何受到C++的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.模板与泛型编程

C++中的模板包括函数模板和类模板两种。在编程中,我们使用模板,就可以独立于任何特定类型的方式来编写代码,例如标准模板库中的vector容器,就是一个模板类,通过vector<int>,vector<String>等,就可以用vector来包含任何类型的数据。使用类模板或函数模板的编程,我们成为是泛型编程,或模板编程。

 

2.函数模板的定义和使用

1)函数模板的定义

template <typename T> int compare(T v1, T v2) {                                                                                              
    if (v1 < v2) return -1;
    if (v2 < v1) return 1;
    return 0;
}

备注:

Atemplatec++中定义模板的关键字,<typename T, class U>成为模板的模板形参表,其中typenameclass等价的。

2)模板函数的使用

compare(1, 2);
compare(1.5,3.8);
compare("hello","world");

备注:

A)在使用模板函数时,编译器会根据传入函数的实参类型,来对应的模板形参的实际类型。因此使用模板函数时,不需要显示执行模板形参表的实际类型。

 

3.类模板的定义和使用

1)类模板的定义

template <class Type> class Queue {
public:
    Queue();
    Type & front();
    void push(const Type &);
    void pop();
private:
    //…
}

备注:

Atemplate <class Type>为定义类模板或函数模板的八股文

2)类模板的使用

Queue<int> qi;
Queue<String> qs;

备注:

A)在使用类模板时,需要显示指定类模板的类型。例如,Queue<int>其中使用整型来执行模板形参的实际类型。

 

4.几个其他的问题

1)无论是类模板还是函数模板,都是一个蓝图,本身不是一个类或函数,编译器用模板产生指定的类或函数的特定类型版本。产生模板的特定类型实例的过程称为模板的实例化

2)有继承语言特性带来的多态性,是程序运行时体现出来的,称为运行时多态性。泛型编程的多态性,是在编译阶段体现的,称为编译时多态性。

(3)Java中也有泛型编程,是从C++中借鉴过去的,是类似的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值