注册 登录
编程论坛 C++教室

C++默认参数的类模板的问题

zhuzhidu784 发布于 2011-05-05 13:34, 346 次点击
程序代码:
#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;
}

为什么不能实现double数组的正确显示

0    0.5   1   1.5   2   2.5   3   3.5   4   4.5

1 回复
#2
specilize2011-05-05 19:03
template<typename AType,int size>AType& atype<AType,size>::operator [](int n)
这里出问题啦,形参是int n,就算你传给n的是double,也会被转换为int,所以就不输出小数咯
1