C++ 这是变量还是函数

C++ 这是变量还是函数,c++,syntax,declaration,C++,Syntax,Declaration,我刚刚通过google查看了非局部均值算法的实现(感谢google的代码搜索),并遇到了这个函数镜像 template<typename T,typename U,bool N> inline int boundaryExpansion::helperBase<T,U,N>::mirror(const int src, const int size,

我刚刚通过google查看了非局部均值算法的实现(感谢google的代码搜索),并遇到了这个函数镜像

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;
}

现在阿尔法是什么?函数还是变量?这个语法是什么意思?这是一个变量声明吗?

这是一个变量声明,它等价于:

const int32 alpha = src%size;

这是一个变量声明。以下形式的声明:

type variablename = value;
本质上相当于:

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


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

它定义了一个名为alpha的int32类型常量,并在构造函数中传递模运算的结果src%sizeIt是一个带有初始值设定项的变量(这是必需的,因为它是一个
常量
变量)。但除了“函数声明不能包含
%
运算符”或“开括号后的第一个标记必须是‘类型’或‘类型相关’单词”之外,我不确定我是否能准确地解释它为什么是变量定义而不是函数声明(请参阅:我告诉过你我不能正确地解释原因)。它是一个正在初始化为“src%size”的变量。由于int32是一个POD,因此它与'alpha=src%size'@JonathanLeffler相同:“%”符号是一个模运算器,其计算结果为int“无论是什么类型,情况都是这样”——不完全是这样。如果<代码>类型< /C>没有副本构造函数,值类型不是“代码>类型< /COD>,后者将不编译。这是C允许的还是仅从C++开始的?我要求我在C中学习C和C++,我在C(不在C++)中有很多实际的经验。我从来没有遇到过这种初始化。如果C语言也允许,那么我必须提高我的C语言技能(@bdonlan:如果值的类型不是
类型
,那么第一个不是对复制构造函数的调用,而是对构造函数的调用,它接受任何值类型的参数。它们并不完全等效,第一个是复制初始化,第二个是直接初始化。请参阅第8.5节
[dcl.init]
,第13-16段。
type variablename(value);