• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

剖析C++中的常量表达式与省略号的相关作用

c++ 搞代码 4年前 (2022-01-06) 38次浏览 已收录 0个评论

这篇文章主要介绍了C++中的常量表达式与省略号的相关作用,以及表达式中的可变参数模板示例,需要的朋友可以参考下

C++ 常量表达式
常量值是指不会更改的值。C + + 提供了两个关键字,它们使你能够表达不打算修改对象的意图,还可让你实现该意图。
C++ 需要常量表达式(计算结果为常量的表达式)以便声明:

  • 数组边界
  • case 语句中的选择器
  • 位域长度规范
  • 枚举初始值设定项

常量表达式中合法的唯一操作数是:

  • 文本
  • 枚举常量
  • 声明为使用常量表达式初始化的常量的值
  • sizeof 表达式

必须将非整型常量(显式或隐式)转换为常量表达式中合法的整型。因此,以下代码是合法的:

 const double Size = 11.0; char chArray[(int)Size]; 

到整型的显式转换在常量表达式中是合法的;所有其他类型和派生类型是非法的(在用作 sizeof 运算符的操作数时除外)。
逗号运算符和赋值运算符不能用于常量表达式。

省略号和可变参数模板
省略号在 C 和 C++ 中具有许多用途。这些包括函数的变量参数列表。C 运行库的 printf() 函数是一种最常见的示例。
variadic 模板是支持任意数量的参数的类或函数模板。此机制对 C++ 库开发人员尤其有用,因为您可以将其应用于类模板和函数模板,从而提供一系列类型安全和重要功能以及灵活性。
语法
可变参数模板用两种方法使用省略号。参数名称的左侧表示参数包,参数名称的右侧将参数包扩展为单独的名称。
以下是可变参数模板类定义语法的基本示例:

 template class classname; 

如以下示例所示,对于参数装箱和展开,可以根据您的喜好在省略号周围添加空白,例如:

 template class classname; 

或为:

 template class classname; 

请注意本文使用的是显示在第一个例子中约定(该省略号附加于typename).
在前面的示例中,Arguments 是参数包。类 classname 可以接受参数数目可变,例如以下示例:

 template class vtclass; vtclass vtinstance1; vtclass vtinstance2; vtclass vtinstance3; vtclass<long, std::vector, std::<a style="color:transparent">来源gao*daima.com搞@代#码网</a>string> vtinstance4; 

通过使用可变参数模板类定义,您还可以要求至少一个参数。

 template  class classname; 

以下是可变参数模板函数语法的基本示例:

 template  returntype functionname(Arguments... args); 

如下一节“了解可变参数模板”所示,Arguments 参数包展开使用。
variadic 模板函数语法还可能有其他形式,包括不限制于:

 template  returntype functionname(Arguments&... args); template  returntype functionname(Arguments&&... args); template  returntype functionname(Arguments*... args); 

还允许使用类似 const 的说明符:

 template  returntype functionname(const Arguments&... args); 

按照可变参数模板类的定义,您可以创建需要至少一个参数的函数:

代码如下:
template returntype functionname(const First& first, const Rest&… args);

以上就是剖析C++中的常量表达式与省略号的相关作用的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:剖析C++中的常量表达式与省略号的相关作用

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址