类模板和函数模板的区别及其应用案例 c++ 简单易懂

函数模板和类模板的区别在于:
1.函数模板有自动类型推导,但是类模板没有自动类型推导,
只能用显式指定类型来实例化类模板中的对象
2.函数模板不可以有默认参数,但是类模板允许有默认参数
当类模板中有默认参数的时候,就可以把显示指定类型的参数去掉
如果两者的类型是一致的话

分别用两个测试案例进行举例

#include<iostream>
using namespace std;
template<typename agetype,typename nametype>
class person
{
public:
	person(agetype age, nametype name)
    {
	this->m_age = age;
	this->m_name = name;
    }
	void showperson()
	{
		cout << "姓名为" << this->m_name << "\t" << "年龄为" << this->m_age << endl;
	}
	agetype m_age;
	nametype m_name;
};
template<typename agetype=int, typename nametype=string>
//模板的默认参数,注意类模板中默认参数的写法
class animal
{
public:
	animal(agetype age, nametype name)//模板的默认参数
	{//注意类模板中默认参数的写法
		this->m_age = age;
		this->m_name = name;
	}
	void showanimal()
	{
		cout << "名字为" << this->m_name << "\t" << "年龄为" << this->m_age << endl;
	}
	agetype m_age;
	nametype m_name;
};
void test01()
{
	//1.函数模板有自动类型推导,但是类模板没有自动类型推导,
//只能用显式指定类型来实例化类模板中的对象

	//person p1(18, "张三");
	//错的,因为类模板中没有自动类型转换
	person <int, string>p1(19, "张三");
	//只能用显示指定类型的方式进行对象的初始化操作
	p1.showperson();
}

void test02()
{
	//函数模板不可以有默认参数,但是类模板允许有默认参数
	//当类模板中有默认参数的时候,就可以把显示指定类型的参数去掉
	//如果两者的类型是一致的话

	animal<>p1(18, "小猫");
	p1.showanimal();
}
int main(void)
{
	test01();
	test02();
	system("pause");
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值