c++函数模板和类模板
Posted 程序彤
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++函数模板和类模板相关的知识,希望对你有一定的参考价值。
函数模板
#include <iostream>
using namespace std;
class Person
public:
string name;
int age;
// bool compare();
Person(string name,int age)
this->name = name;
this->age=age;
;
/**
* 函数模板
* @tparam T
* @param a
* @param b
* @return
*/
template<class T>
bool compare(T &a, T &b)
if (a == b)
cout << "a和b相等" << endl;
// 这里必须这么写,否则怎样编译均不通过!
template<> bool compare(Person &p1,Person &p2)
if (p1.age==p2.age&&p1.name==p2.name)
return true;
return false;
void test1()
Person person1("lwt",20);
Person person2("lwt",20);
// 这里的compare是调用了template<> bool compare(Person &p1,Person &p2)
bool isEqual = compare(person1,person2);
if (isEqual)
cout<<"="<<endl;
return;
cout<<"!="<<endl;
int main()
test1();
return 0;
类模板
//
// Created by 李威彤 on 2021/11/25.
//
#include <iostream>
#include "person.h"
using namespace std;
template<class T1, class T2>
class Person
public:
T1 name;
T2 age;
Person(T1 name, T2 age);
void print();
;
template<class T1, class T2>
Person<T1, T2>::Person(T1 name, T2 age)
this->name = name;
this->age = age;
cout << "Person<T1,T2>::Person(T1 name,T2 age)..." << endl;
template<class T1, class T2>
void Person<T1, T2>::print()
cout << this->name << "-" << this->age << endl;
;
main()
#include <iostream>
#include "person.hpp" // 法一:这里包含的不能是头文件
//法二:将.h和.cpp文件写到一起于.hpp
using namespace std;
void test1()
Person<string, int> p("lwt", 22);
p.print();
int main()
test1();
return 0;
以上是关于c++函数模板和类模板的主要内容,如果未能解决你的问题,请参考以下文章