回 帖 发 新 帖 刷新版面

主题:请教两个关于c++的问题 谢谢解答

1:
template <typename T>
class point {...};
template <typename T>
class line :public point <T> {...};
请问在这里 public point 后面的 <T> 是什么作用? 例如 T=int 有什么作用呢 谢谢 
之前我所见到的例子都是这样的
template <typename T>
class point {...};
template <typename T>
class line :public [color=FF0000]point[/color] {...};
就是point 后面没有  类型<T>
但是上面的例子 point 后面有个 <T> 我不知道这是什么意思,干什么用的? 谢谢解答
2:
用c++ 实现 3!+2!+1!
void main()
{
   int s=0;
   int fac(int i);
   for(int i=1;i<=3;i++)
      s+=fac(i);
   cout<<s;
}
int fac(int i)
{   static int b=1;
    b*=i;
    return b;
}
请问这个fac 函数 是怎么实现当前i值的阶乘的?  非常感谢

回复列表 (共4个回复)

沙发

第一题:看C++的模板那章.
第二题:用循环或递归.
循环版:
int fac(int i)
{
    int r=i;
    while(--i>1)
       r*=i;
    return r;
}

板凳

我看书了 但是他们的举例都是
template <typename T>
class point {...};
template <typename T>
class line :public point {...};
模板类point 后面并没有<T> 麻烦你了。
还有第二个问题是:
 那个程序就是我上面所给的,但是我始终不明白那个 fac函数是如何实现阶乘的? 非常感谢。

3 楼

1:
template <typename T>
class line :public point <T> {...};
这里的public point <T>是指line继承特定的point<T>,例如
line<int> ln;
这就是line<int>继承了point<T>了.
2:
用你写的fac函数基本是不可重用的,建议用我写的那种.至于如何实现阶乘,复制一点的证明要用循环不变式的,简单的就自己用纸和笔演算一次就知道了.

4 楼

我已经搞定了 不过还是谢谢你们

我来回复

您尚未登录,请登录后再回复。点此登录或注册