1009模板01模板的概念以及基本语法

93 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第14天,点击查看活动详情

1.引言

  • c++除了有面向对象编程还有泛型编程。

  • 本阶段主要针对C++ 泛型编程STL技术做详细讲解,探讨C++更深层的使用

  • 泛型编程:主要利用模板的技术去做一个实现。

  1. 模板把函数或类要处理的数据类型参数化,表现为参数的多态性,成为类属。
  2. 模板用于表达逻辑结构相同,但具体数据元素类型不同的数据对象的通用行为。

2.模板的概念

  • 模板就是建立通用的模具,大大提高复用性
  • 通用行很强,但是不能直接使用,

模板的特点:

  • 模板不可以直接使用,它只是一个框架
  • 模板的通用并不是万能的

3.函数模板

  • 建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表。 将函数返回值和形参类型更抽象出去。

语法:

template<typename T>
函数声明或定义

解释:

  • template --- 声明创建模板

  • typename --- 表面其后面的符号是一种数据类型,可以用class代替 告诉编译器,它的后面是通用的类型也是个虚拟的类型。

  • T --- 通用的数据类型,名称可以替换,通常为大写字母 声明一个模板,告诉编译器后面代码中紧跟着的T不要报错,T是一个通用的数据类型。

4.代码举例说明

  • 取两数之间的最大值
  • 两种方式使用函数模板

4.1 自动类型推导

  • 因为我们传入的数据是整型,把实参放到了形参中,他就自动推导是整型。
#include<iostream>
#include <fstream>
#include <string>
using namespace std;
void maxint(int &a, int &b)
{
	if (b > a) {
		a = b;
	}
}

void h()
{
	int a, b;
	a = 1;
	b = 2;
	maxint(a, b);
	cout << "最大值是: " << a << endl;
}

int main() {
	h();
	system("pause");
	return 0;
}

输出:

最大值是: 2 请按任意键继续. . .

  • 如果是浮点型
void maxint(double &a, double &b)
{
	if (b > a) {
		a = b;
	}
}

void h()
{
	double a, b;
	a = 1.2;
	b = 1.3;
	maxint(a, b);
	cout << "最大值是: " << a << endl;
}

输出:

最大值是: 1.3 请按任意键继续. . .