这是变量还是函数

Kri*_*dra 2 c++ syntax declaration

我只是通过谷歌查看非本地均值算法的实现(感谢谷歌的代码搜索)并遇到了这个函数镜像。

template<typename T,typename U,bool N>
inline int
boundaryExpansion::helperBase<T,U,N>::mirror(const int src,
                                               const int size,
                                               const int last) const {
  const int32 alpha(src%size);
  if (alpha>=0) {
    return (((src/size) & 0x00000001) != 0) ? last-alpha : alpha;
  }
  return (((src/size) & 0x00000001) == 0) ? -alpha-1 : size+alpha;
}
Run Code Online (Sandbox Code Playgroud)

我感兴趣的线路是这个

const int32 alpha(src%size);
Run Code Online (Sandbox Code Playgroud)

现在这里的 alpha 是什么?函数还是变量?这个语法是什么意思?这是变量声明吗?

bdo*_*lan 5

这是一个变量声明。表格声明:

type variablename = value;
Run Code Online (Sandbox Code Playgroud)

本质上等同于:

type variablename(value);
Run Code Online (Sandbox Code Playgroud)

无论是什么type- 无论是用户定义的类还是内置类型,情况都是如此。请注意,情况并非总是相反 -=语法要求有一个可访问的复制构造函数。

出于类似的原因,您可以使用构造函数语法强制转换算术类型,如下所示: x = int(42.0);

  • 它们不是**完全**等价的,第一个是*复制初始化*,第二个是*直接初始化*。参见标准的第 8.5 节 `[dcl.init]`,第 13-16 段。 (4认同)
  • *“无论什么类型都是这种情况”* - 不完全是。如果 `type` 没有复制构造函数,并且值的类型不是 `type`,后者将不会编译。 (3认同)