1、泛型是什么? 泛型编程是什么?
实质上就是不使用具体数据类型(int、double、float等),而是使用一种通用类型来进行程序设计的方法,泛泛的描述一下数据,这个方法可以大规模的减少程序代码的编写量。
模板函数如下:
其中,T是一个占位符(数据类型占位符),也就是说,将来T这个位置是一个真实的、具体的数据类型。
所以,可以把T这种类型占位符也称为一种数据类型,就叫泛型(generic type)。使用这种类型占位符的编程方式就叫泛型编程。
总之,泛型也是一种数据类型,但它是用来代替所有类型的“通用类型”。
template<typename T>
int func(const T &a1, const T &a2)
{
...
}
template <class T>
inline int func(const T &a1, const T&a2)
{
...
}
tempalte<typename T1, typename T2, typename T3>
T1 func(const T2 &t2, const T3 &t3)
{
...
}
//调用方法
func<long>(i, log);
2、常用的泛型例子有什么?
STL容器、迭代器、算法都是泛型编程的例子,(多态也是一种泛型编程,因为通父类对象可以调用其不同的子类,在函数传递时只需要将接口声明为父类,即可传递其不同的子类达到多态的效果)。
3、泛型有什么形式实现的?
通常两种形式:函数模板和类模板。
函数模板:针对仅参数类型不同的函数;
类模板:针对仅数据成员和成员函数类型不同的类;
4、什么是模板?
使用了泛型的代码称为模板,由模板生成实际代码的过程称为模板的具体实现。
5、为什么有模板?
目的就是编写一些与类型无关的代码。
6、函数重载:函数名相同,参数类型不同,参数个数不同,参数顺序不同。
比模板代码要多。