c++类模板的声明与调用,与普通模板函数的区别,类模板可以有默认的参数
程序员文章站
2022-07-15 12:50:27
...
声明类模板,包含姓名与年龄。
生成类(包含姓名与年龄)
调用时
必须显示指定类型或指定默认的参数类型。
- 显示指定类型:
Person<string, int> p1("张三",22);
对应在模板中的参数类型就是:
姓名——string
年龄——int
#include<iostream>
#include<string>
using namespace std;
template<class NameType,class AgeType>
class Person {
public:
Person(NameType name, AgeType age) {
this->m_Name = name;
this->m_Age = age;
}
void show() {
cout << "name:" << this->m_Name << " age:" << this->m_Age << endl;
}
public:
NameType m_Name;
AgeType m_Age;
};
void test01() {
Person<string, int> p1("张三",22);
p1.show();
}
int main() {
test01();
system("pause");
return 0;
}
- 指定默认参数:
如果没有显示调用;自动推导式不成立的。
我们可以在类模板中有默认的参数
template<class NameType=string,class AgeType=int>
添加默认的参数为string和int之后
#include<iostream>
#include<string>
using namespace std;
template<class NameType=string,class AgeType=int>
class Person {
public:
Person(NameType name, AgeType age) {
this->m_Name = name;
this->m_Age = age;
}
void show() {
cout << "name:" << this->m_Name << " age:" << this->m_Age << endl;
}
public:
NameType m_Name;
AgeType m_Age;
};
void test01() {
Person<string,int> p1("张三",22);
p1.show();
Person<> p2("李四", 20);
p2.show();
}
int main() {
test01();
system("pause");
return 0;
}
即使李四没有显示指示类型。
程序正常可以运行。
总结:
-
类模板使用只能用显示指定类型方式
-
类模板中的模板参数列表可以有默认参数
上一篇: C++声明和实现分离