欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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;
}

c++类模板的声明与调用,与普通模板函数的区别,类模板可以有默认的参数

  • 指定默认参数:

如果没有显示调用;自动推导式不成立的。

c++类模板的声明与调用,与普通模板函数的区别,类模板可以有默认的参数

我们可以在类模板中有默认的参数

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++类模板的声明与调用,与普通模板函数的区别,类模板可以有默认的参数

总结:

  • 类模板使用只能用显示指定类型方式

  • 类模板中的模板参数列表可以有默认参数