C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > C++类模板

浅析C++中类模板的用法

作者:码出世界的淡水鱼

C++类模板是一种用于创建通用类的工具,它允许我们定义一个通用类,支持多种类型。本文就来简单讲讲它的具体使用吧,感兴趣的可以了解一下

C++类模板

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

定义类模板

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

template<class T>
class ClassName {
public:
  ClassName(T arg1, T arg2, ...){
    // constructor code
  }
  T getMax();
  T getMin();
  // ...
private:
  T arg1, arg2, ...;
};

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

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

#include<iostream>
using namespace std;

template<class T>
class Example {
public:
    Example(T a, T b) {
        this->a = a;
        this->b = b;
    }

    void show() {
        cout<< "a: "<< a <<endl;
        cout<< "b: "<< b <<endl;
    }

private:
    T a;
    T b;
};

int main() {
    Example<int> example_int(5, 6);
    example_int.show();

    Example<string> example_string("hello", "world");
    example_string.show();

    return 0;
}

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

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

类模板成员函数的定义

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

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

template<class T>
class Example {
public:
    Example(T a, T b) {
        this->a = a;
        this->b = b;
    }

    void show() {
        cout<< "a: "<< a <<endl;
        cout<< "b: "<< b <<endl;
    }

    T max() {
        return a > b ? a : b;
    }

private:
    T a;
    T b;
};

int main() {
    Example<int> example_int(5, 6);
    example_int.show();

    Example<string> example_string("hello", "world");
    example_string.show();

    cout << example_int.max() << endl;
    cout << example_string.max() << endl;

    return 0;
}

在上面的示例中,我们新增了成员函数T max(),它返回两个数据成员a和b中的较大值。

输出的结果如下:

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

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

总结

在这篇文章中,我们介绍了C++类模板的基础知识。我们可以使用类模板来定义通用的类,支持多种类型。我们还了解了如何定义类模板,并创建了支持整数类型和字符串类型的对象。最后我们学习了类模板成员函数的定义,以及如何在调用时指定不同的数据类型。

到此这篇关于浅析C++中类模板的用法的文章就介绍到这了,更多相关C++类模板内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文