以下是 C++ 中使用模板实现的 Array 类的代码示例:

#include <iostream>
#include <cstring>
using namespace std;

template <class T>
class Array
{
    template <class T1>
    friend ostream &operator<<(ostream &out, Array<T1> &ra);
    template <class T1>
    friend istream &operator>>(istream &in, Array<T1> &ra);

private:
    T *m_arr;
    int m_size;

public:
    Array(int size) : m_size(size)
    {
        m_arr = new T[size];
        memset(m_arr, 0, sizeof(T) * size);
    }
    ~Array()
    {
        delete[] m_arr;
    }

    T &operator[](int index)
    {
        return this->m_arr[index];
    }

    int size()
    {
        return m_size;
    }
};

template <class T1>
ostream &operator<<(ostream &out, Array<T1> &ra)
{
    for (int i = 0; i < ra.m_size; i++)
    {
        out << ra.m_arr[i] << ' ';
    }
    return out;
}

template <class T1>
istream &operator>>(istream &in, Array<T1> &ra)
{
    for (int i = 0; i < ra.m_size; i++)
    {
        in >> ra.m_arr[i];
    }
    return in;
}

int main()
{
    Array<int> Aa(5);

    cin >> Aa;

    cout << Aa << endl;
}

代码中“T1”可以改成“T”吗?

是的,代码中的“T1”可以改成“T”。这是因为在这个代码中,模板参数名字可以任意选择,只要保证在整个代码中保持一致即可。在这种情况下,将“T1”改为“T”不会对代码的功能产生任何影响。

关于模板参数命名的一些补充说明:

  • 模板参数名只是在模板定义和使用过程中使用的占位符,它们不会影响最终生成的代码。
  • 选择模板参数名时,尽量选择有意义且易于理解的名称,以便提高代码的可读性。
  • 即使将“T1”改成“T”,也需要在使用模板时保持一致,例如:
Array<int> Aa(5); // 使用 int 类型

总而言之,模板参数命名只是形式上的问题,只要在代码中保持一致,就可以根据需要进行修改。

希望这篇文章对您理解 C++ 模板类和模板参数命名规则有所帮助。

C++ 模板类:Array 详解及模板参数命名

原文地址: https://www.cveoy.top/t/topic/b2le 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录