65,211
社区成员
发帖
与我相关
我的任务
分享#include <iostream>
using namespace std;
template <class T>
class Array {
public:
T& operator[ ](int);
const T& operator[ ](int) const;
Array(int);
~Array();
int get_size() const;
private:
T* a;
int size;
Array(); //for emphasis(重点)
T dummy_val; // rerurned on bad index
};
template <class T>
T& Array <T>::operator[ ](int i) {
if (i < 0 || i >= size) {
cerr << "index " << i << "out of bounds";
return dummy_val;
}
return a[i];
}
template <class T>
const T& Array <T>::operator[ ](int i) const {
if (i < 0 || i >= size) {
cerr << "index " << i << "out of bounds";
return dummy_val;
}
return a[i];
}
template <class T>
Array < T > :: Array(int s) {
a = new T[size = s];
}
template <class T>
Array < T > :: ~Array() {
delete[ ] a;
}
template <class T>
int Array < T > :: get_size() const {
return size;
}
// top-level overload of operator <<
template <class T>
ostream& operator << (ostream& os, const Array < T>& ar) {
for (int i = 0; i < ar.get_size(); i++)
os << ar[i] << endl;
return os;
}
using namespace std;
int main() {
Array <int> a(3);
a[0] = 0;
a[1] = 1;
a[2] = 2;
cout << a;
return 0;
}
template <class T>
int Array < T > :: get_size() const {
return size;
}