关于模板中的常量表达式的问题!请指教!

PasserbyX 2005-10-31 02:42:59
形如temple <int len, int beg_pos>
class NumericSeries的声明有什么作用?是不是类似于于在NumericSeries类中声明了两个Private Member?我在《Essential C++》第五第六章中经常看到这样的例子,但还是不大明白,请大家指教!
...全文
304 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ywchen2000 2005-11-06
  • 打赏
  • 举报
回复
temple <int len, int beg_pos>
len,beg_pos用来传值,这样可以不要用new来分配空间了,还有其他很多用法看c++ primer说的很清楚

template<typename T,int len>
class xxx{
public:
yang(void)
{
for(int i=0;i<len;i++)
str[i]=0;
}
void print(void);
private:
T str[len];
}
oyljerry 2005-11-05
  • 打赏
  • 举报
回复
模板用来替换类型的
JohnTitor 2005-11-05
  • 打赏
  • 举报
回复
这个参数跟Public Private Protect无关。也不是类的成员。它只在你实例化该模板的时候起作用,用于区别同一模板的不同类的。如:
NumericSeries<3,4> 和NumericSeries<4,5>是两个完全不同的类。
PasserbyX 2005-11-05
  • 打赏
  • 举报
回复
谢谢大家。但如楼上所说,这个参数在类中是Public Private Protect?它与在类中直接声明一个常量有什么区别?主要作用是什么?能否说得详细点,谢了。
codearts 2005-11-01
  • 打赏
  • 举报
回复
同意 ww51xh(月亮被水淹了) 的说法
K 2005-11-01
  • 打赏
  • 举报
回复
可以当成常量
lujun-cc 2005-11-01
  • 打赏
  • 举报
回复
支持一下!
why25 2005-11-01
  • 打赏
  • 举报
回复
那这个参数在类中是什么类型存的?
public ?
private ?
protect ?
feitian124 2005-11-01
  • 打赏
  • 举报
回复
ding
fiftymetre 2005-11-01
  • 打赏
  • 举报
回复
参数在模板或泛型的定义中起占位符(placeholder)的作用。用户通过提供绑定到参数的实际值

来建立对象实例。参数化类型的实例化并非简单的文本替代(宏扩展机制就是使用文本替代的)。相反地,它把实际的用户值绑定到定义中的相关的形式参数上。

  在泛型中,每个参数都表现为Object类型或衍生自Object的类型。在本文后面你可以看到,这约束了你可能执行的操作类型或通过类型参数声明的对象。你可以通过提供更加明确的约束来调整这些约束关系。这些明确的约束引用那些衍生出实际类型参数的基类或接口集合。
模板除了支持类型参数之外,还支持表达式和模板参数。此外,模板还支持默认的参数值。这些都是按照位置而不是名称来分解的。在两种机制之下,类型参数都是与类或类型名称关键字一起引入的。
wzjall 2005-10-31
  • 打赏
  • 举报
回复
template<int a,class x>
class CTempl
{public:
x y;
void Display(){cout <<a<<y<< endl;}
};

void main()
{
CTempl<1,int> tem;
tem.Display(); //输出10

CTempl<1,int> te;
te.Display(); //输出100

}
fancyboyxh 2005-10-31
  • 打赏
  • 举报
回复
同意 ww51xh(月亮被水淹了) 的说法
ww51xh 2005-10-31
  • 打赏
  • 举报
回复
其实模板用得更多的形式是
template<class Type>
class CTemplateObject
{
Type m_tpElement;
};

其中Type表示的是一个类型,可以用任何的数据类型替代
像楼主给出的就相当于在类内部定义了一个常量,只不过这个常量由类名声明的时候给赋以值

template<int nValue>
class CTempl
{
void Display(){cout<< nValue << endl;}
};

在调用的时候,可以这样
CTempl<10> temp1;
tmepl.Display(); //输出10

CTempl<100> temp1;
tmepl.Display(); //输出100
Beover1984 2005-10-31
  • 打赏
  • 举报
回复
不明白楼主的问题???????????????????????

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧