![]() |
#2
玩出来的代码2011-05-07 14:09
|

#include<iostream>
using namespace std;
template<typename AType=int,int size = 10>
class atype
{
public:
atype()
{
int i;
for(i=0;i<size;i++) array[i]=i;
}
AType& operator[](int n);
private:
AType array[size];
};
template<typename AType,int size>AType& atype<AType,size>::operator [](int n)
{
if(n<0||n>=size)
{cout<<"下标"<<n<<"超出范围!!!"<<endl;
exit(1);
}
return array[n]=n;
}
int main()
{
atype<int,12>intob;
atype<double>doubleob;
atype<>defaultob;
int i;
cout<<"int数组:";
for(i=0;i<12;i++) intob[i]=i;
for(i=0;i<12;i++)
cout<<intob[i]<<" ";
cout<<endl;
cout<<"double数组:";
for(i=0;i<10;i++) doubleob[i]=(double)i/2;
for(i=0;i<10;i++)
cout<<doubleob[i]<<" ";
cout<<endl;
cout<<"默认数组:";
for(i=0;i<10;i++)
for(i=0;i<10;i++)
cout<<defaultob[i]<<" ";
cout<<endl;
return 0;
}
我明明设置了doubleob[i]=(double)i/2;using namespace std;
template<typename AType=int,int size = 10>
class atype
{
public:
atype()
{
int i;
for(i=0;i<size;i++) array[i]=i;
}
AType& operator[](int n);
private:
AType array[size];
};
template<typename AType,int size>AType& atype<AType,size>::operator [](int n)
{
if(n<0||n>=size)
{cout<<"下标"<<n<<"超出范围!!!"<<endl;
exit(1);
}
return array[n]=n;
}
int main()
{
atype<int,12>intob;
atype<double>doubleob;
atype<>defaultob;
int i;
cout<<"int数组:";
for(i=0;i<12;i++) intob[i]=i;
for(i=0;i<12;i++)
cout<<intob[i]<<" ";
cout<<endl;
cout<<"double数组:";
for(i=0;i<10;i++) doubleob[i]=(double)i/2;
for(i=0;i<10;i++)
cout<<doubleob[i]<<" ";
cout<<endl;
cout<<"默认数组:";
for(i=0;i<10;i++)
for(i=0;i<10;i++)
cout<<defaultob[i]<<" ";
cout<<endl;
return 0;
}
可是为什么输出却是0 1 2 3 4 5 6 7 8 9啊