类型转换重载的一段代码

# include <iostream>
using namespace std;
template <typename T, int SIZE>
class array
{
T data_[SIZE];
public:
array(){};
array (const array& other);
const array& operator = (const array& other);
T& operator[](int i) {return data_[i];}
const T& get_elem (int i) const {return data_[i];}
void set_elem(int i, const T& value) {data_[i] = value;}
operator T* () {cout <<"隐式调用!" <<endl; return data_;}
};
void main()
{
array<int,10> A;
A[0] =10;
int *B = (int*)A;
cout << B[0] << endl;
system("pause");
}

这是在网上看到的一段代码,一开始不太明白 operator T* () 这个函数怎样被调用,以及它实现的是什么重载。后来才知道它是类型转换的重载,将array<T,int size>类型的对象转换为T*的指针。就如同一个int型数组的名字可以用作int*的指针一样。int *B = (int*)A也可以写作int* B = A;

posted @ 2012-02-29 11:34  Ranger98  阅读(130)  评论(0)    收藏  举报