C++ 模板类:Array 详解及模板参数命名
以下是 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++ 模板类和模板参数命名规则有所帮助。
原文地址: https://www.cveoy.top/t/topic/b2le 著作权归作者所有。请勿转载和采集!