标签:main 转换 显示 ++ 数值 模板 概念 end 虚拟
//template---声明创建模板
//typename---表明其后面是一种数据类型,也可以用class代替
template<typename T>//声明一个模板
//以下是函数的声明或定义
实际案例:完成两个相同类型的值的交换
#include <iostream>
using namespace std;
template<typename T>
void mySwap(T& a, T& b) {
T temp = a;
a = b;
b = temp;
}
//模板函数的使用
void test02() {
int a1 = 1;
int b1 = 2;
cout << a1 << endl;
cout << b1 << endl;
mySwap(a1, b1);//自动类型推导
//mySwap <int>(a1,b1);显示指定类型
cout << a1 << endl;
cout << b1 << endl;
}
int main() {
test02();
}
/*1
2
2
1*/
template<class T>//类模板声明
//底下写类的定义
//<class T>---->模板参数表,不能为空,参数可以有多个,用逗号隔开
#include <iostream>
using namespace std;
#include <String>
template<class Nametype,class Agetype>
class Person {
public:
Person(Nametype name,Agetype age) {
p_name = name;
p_age = age;
}
Nametype p_name;
Agetype p_age;
};
void test03() {
Person<string, int> p1("aaa", 10);
cout<<p1.p_age<<p1.p_name<<endl;
}
int main() {
test03();
}
/*10aaa*/
类模板没有自动类型推导的使用方式,只能使用显示类型法。
类模板在模板参数列表中有默认参数
(比如上面的:template<class Nametype,class Agetype=int>
? 在之后的构造对象后,可以不显示后面Agetype的类型
? Person
)
标签:main 转换 显示 ++ 数值 模板 概念 end 虚拟
原文地址:https://www.cnblogs.com/lyj-study/p/14110758.html