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

这里有C++STL——全面总结详细教程(附案例解析)(持续更新中)

声明类模板,包含姓名与年龄。

生成类(包含姓名与年龄)

调用时

必须显示指定类型或指定默认的参数类型。

  • 显示指定类型:

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

即使李四没有显示指示类型。

程序正常可以运行。

总结:

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

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

发布了68 篇原创文章 · 获赞 141 · 访问量 29万+

猜你喜欢

转载自blog.csdn.net/cfl997/article/details/103141304
今日推荐