C++中类模板如何使用

其他教程   发布日期:2025年02月26日   浏览次数:156

这篇“C++中类模板如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++中类模板如何使用”文章吧。

C++类模板

C++类模板是一种用于创建通用类的工具,它允许我们定义一个通用类,支持多种类型。

定义类模板

C++中定义类模板的语法如下:

  1. template<class T>
  2. class ClassName {
  3. public:
  4. ClassName(T arg1, T arg2, ...){
  5. // constructor code
  6. }
  7. T getMax();
  8. T getMin();
  9. // ...
  10. private:
  11. T arg1, arg2, ...;
  12. };

其中,

  1. template<class T>
表明T是一个类型参数,T是我们要定义的通用类型,一旦T被定义,我们就可以使用它来定义类的成员。

接下来,我们可以使用类模板来创建具有通用功能的类的对象。例如,考虑下面的示例:

  1. #include<iostream>
  2. using namespace std;
  3. template<class T>
  4. class Example {
  5. public:
  6. Example(T a, T b) {
  7. this->a = a;
  8. this->b = b;
  9. }
  10. void show() {
  11. cout<< "a: "<< a <<endl;
  12. cout<< "b: "<< b <<endl;
  13. }
  14. private:
  15. T a;
  16. T b;
  17. };
  18. int main() {
  19. Example<int> example_int(5, 6);
  20. example_int.show();
  21. Example<string> example_string("hello", "world");
  22. example_string.show();
  23. return 0;
  24. }

上面的代码中,我们定义了一个类模板Example,并在其中定义了两个类型相同的数据成员a和b。我们可以使用类模板Example创建支持整数类型和字符串类型的对象example_int和example_string。执行程序输出如下:

a: 5
b: 6
a: hello
b: world

类模板成员函数的定义

C++类模板可以定义成员函数,成员函数可以是访问控制的任何类型:public、protected和private。

定义成员函数的形式与普通类相同:

  1. template<class T>
  2. class Example {
  3. public:
  4. Example(T a, T b) {
  5. this->a = a;
  6. this->b = b;
  7. }
  8. void show() {
  9. cout<< "a: "<< a <<endl;
  10. cout<< "b: "<< b <<endl;
  11. }
  12. T max() {
  13. return a > b ? a : b;
  14. }
  15. private:
  16. T a;
  17. T b;
  18. };
  19. int main() {
  20. Example<int> example_int(5, 6);
  21. example_int.show();
  22. Example<string> example_string("hello", "world");
  23. example_string.show();
  24. cout << example_int.max() << endl;
  25. cout << example_string.max() << endl;
  26. return 0;
  27. }

在上面的示例中,我们新增了成员函数

  1. T max()
,它返回两个数据成员a和b中的较大值。

输出的结果如下:

a: 5
b: 6
a: hello
b: world
6
world

注意我们调用成员函数max的时候可以使用不同类型的实例。

以上就是C++中类模板如何使用的详细内容,更多关于C++中类模板如何使用的资料请关注九品源码其它相关文章!