/*类模板的作用:只有数据类型不同,作用相同的类
===类模板的一般格式====
template<模板参数表>
class 类模板名
{
成员声明
}
template<typename T>
class Array
{
成员声明
}
===类模板外的成员函数格式====
类型 类模板名<参数>::函数名(参数名)
{
函数体
}
template<typename T>
void Array< T >::Show()
{
函数体
}
===类模板生成对象格式====
类模板<实参表> 对象1,对象2
Array<int> intArray(10, 0);
*/
#include<iostream>
using namespace std;
#define C(dataType) template<typename T> dataType Array< T >
template<typename T>
class Array
{
public:
Array(int size,T initValue);
~Array();
T& operator[](int index);
void Show();
private:
int size;
T* p;
};
C(void)::Show()
{
for (int i = 0; i < size; i++)
cout << p[i] << " ";
cout << endl;
}
C(T&)::operator[](int index)
{
return p[index];
}
C()::Array(int size, T initValue)
{
this->size = (size > 1) ? size : 1;
this->p = new T[size];
for (int i = 0; i < size; i++)
p[i] = initValue;
}
C()::~Array()
{
delete[] p;
}
int main(void)
{
int nArr[10] = { 0,1,2,3,4,5,6,7,8,9 };
char cArr[10] = { 'A','B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J' };
Array<int> intArray(10, 0);
Array<char> charArray(10, 0);
for (int i = 0; i < 10; i++)
intArray[i] = nArr[i];
//intArray.operator[](i) = nArr[i];
//P[index] = nArr[i]
intArray.Show();
for (int i = 0; i < 10; i++)
charArray[i] = cArr[i];
charArray.Show();
return 0;
}
类模板定义
最新推荐文章于 2024-08-16 10:58:53 发布
本文详细介绍了C++中的类模板,包括类模板的作用、一般格式、成员函数定义以及对象创建。通过示例展示了如何使用类模板创建整型和字符型数组,并实现显示数组元素的功能。类模板提供了一种泛型编程的方式,可以用于不同数据类型的通用操作。
1233

被折叠的 条评论
为什么被折叠?



