C++学习笔记二十一——函数模板与类模板

针对函数模板与类模板我想摒弃课本固有的理论知识定义,用我自己的话来见简单的叙述作用以及概念。
函数模板有什么用?
C++有很多基本的数据类型,比如 int ,double ,float…等等。我们在定义一个函数时会定义一个返回类型,表示函数返回值,但是这种返回值有一个坏处,就是只能返回单一的数据类型。如果两个参数基本类型不一致,但是想执行的函数体是一致这样我们就需要写两个函数,比如对于float 和int 基本类型来说,我们进行取绝对值的操作我们就需要写两个形参不同的函数

int abs (int x){
return (a>0)?a:-a;
}

float abs(float x)
{
return (x>0)?x:-x
}

从以上我们可以看到,单一的返回类型对于上述情况显得过于累赘,因此,函数模板的概念应运而生。它最主要的特点你就是可以先不说明返回值的类型,而把函数对对象进行的操作当成一个模板,对于任何的对象都可以执行函数的操作。
基本的声明格式

template<typename 参数名>//中间的typename 可以替换成 class
template<class 参数名>   
//其中template 是一种声明格式,后面的参数名就可以当作一种函数类型

接下来我们以上面的函数模板来举一个取绝对值的例子

# include <iostream>
# include <string>
using namespace std;
template <typename t>
t abs(t x)
{
return (x>0)? x:-x
}
int main()
{
int test1=1;
double test2=2.0;
cout << abs(test1)<< "\n"
     << abs(test2) << endl;
}

运行结果如下
在这里插入图片描述
以上就是函数模板,当你传入不同参数类型的时候,系统可以根据参数类型绑定生成对应的函数。进而可以节省很多时间与空间。
类模板有什么用?
根据以上我们能够了解函数模板的作用,其实类模板也是如此。我们在定义一个类对象的成员的时,也只能定义一些基本的数据类型,但是们通过类模板可以先不用定义成员数据的类型。其实这一些模板操作,是让我们不管是函数也好,成员也好。直接对对象进行操作。可以免去很多不必要的麻烦。
我们直接举例子

# include <iostream>
# include <string>
using namespace std;

//类模板 其实只是声明了一种参数类型,而这种类型暂时还不确定
template <class rui,class rui1>
class test1
{
private:
	rui x;
	rui1 istrue;
public:
	test1(rui x1, rui1 istrue1);
	void getvalue();
};
template<class rui,class rui1>
test1<rui,rui1>::test1(rui x1,rui1 istrue1):x(x1),istrue(istrue1)
{
}
template<class rui,class rui1>
void  test1<rui,rui1>::getvalue()
{
	cout << this->istrue << "\n"
		<< this->x << endl;

}

int main()
{
	test1<int,bool> r111(1, true);
	r111.getvalue();

	



}
//重载操作符 
//返回类型 operator 符号(参数表)

我们在上面首先要注意以下几点
1.在声明模板类之后。我们要是在类外定义函数成员的格式为
函数类型 类模板名<参数名>::函数名(参数名)
{函数体}
2.在使用类模板的时候要声明具体的类型了。比如文中的
test1<int,bool> r111(1, true);声明了两个参数的类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值