100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 类模板和函数模板的区别及其应用案例 c++ 简单易懂

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

时间:2019-01-15 04:06:42

相关推荐

类模板和函数模板的区别及其应用案例 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");}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。