#include<iostream>
#include<fstream>
#include<string>
using namespace std;
/************************************************************************/
/*初学模板类,写一个数组模板类*/
/************************************************************************/
template <class T>
class Array
{
public:
Array(int);
T & operator[] (int);
//const T & operator[](int) const;
int getSize();
~Array();
private:
T *a;
int size;
int errorValue;
Array();
};
template<class T>
Array<T> ::Array(int n)
{
a = new T[size = n];
errorValue = -1;
}
template<class T>
Array<T> ::~Array()
{
delete []a;//如果不加[]会有异常
}
template<class T>
T& Array<T>::operator[](int index)
{
if(index < 0 || index >= size)
{
cout << "error" << endl;
exit(0);
}
return a[index];
}
template<class T>
int Array<T>::getSize()
{
return size;
}
/************************************************************************/
/* 上面定义的是一个数组类型的类模板,下面定义一个类,以使其可以类似数组访问*/
/************************************************************************/
class Student
{
public:
void setAge(int a);
int getAge();
void setName(string n);
string getName();
private:
int age;
string name;
};
void Student::setAge(int a)
{
age = a;
}
int Student::getAge()
{
return age;
}
void Student::setName(string n)
{
name = n;
}
string Student::getName()
{
return name;
}
void test()
{
// Array<int> obj(10);
ifstream cin("in.txt");
Array<Student> obj(10);
int size = obj.getSize();
cout << size << endl;
int age;
string name;
for(int i=0; i<obj.getSize(); i++)
{
//cout << "enter age and name: ";
cin >> age >> name;
obj[i].setAge(age);
obj[i].setName(name);
}
for(i=0; i<obj.getSize(); i++)
{
cout << "name: " << obj[i].getName() << " age: " << obj[i].getAge() << endl;
}
}
int main()
{
test();
return 0;
}
类模板使用方法
最新推荐文章于 2022-07-03 10:51:50 发布