模板类的头文件
#ifndef __POINTER_H__
#define __POINTER_H__
#include <iostream>
using namespace std;
template <typename T>
class POINTER
{
public:
POINTER(T* pTemp) : pointer(pTemp){}
operator T * ()
{
return pointer;
}
T* operator++()
{
++pointer;
return pointer;
}
T* operator++(int)
{
return
}
friend ostream & operator << (ostream os, const POINTER <T> & Temp)
{
os <<"6666"<<endl;
return os;
}
T operator*()
{
return *pointer;
}
T & operator[](int n)
{
return pointer[0];
}
T & operator[](int n) const
{
return pointer[0];
}
private:
T * pointer;
};
#endif
注意该出 经过编译 并没有报错 0 Error 0 Warning
T* operator++(int)
{
return
}
Main.cpp
int main(int argc, char* argv[])
{
int nArr[5] = {1,2,3,4,5};
cout<<&nArr<<endl;
POINTER <int > a = nArr;
cout<<++a<<endl;
cout<<++a<<endl;
cout<<++a<<endl;
cout<<++a<<endl;
cout<<*a<<endl;
a[4] = 10;
cout<<*a<<endl;
cout<<a[4]<<endl;
return 0;
}
结论:当我们定义一个模板类的时候 , 编译器 并不会生成全部 类模板成员函数,只有在调用的 时候 才会产生
所以当我们修改代码
cout<<a++<<endl;
才会出现编译错误 其余时候 编译器并不检查