根据C ++标识符的命名规则:
有效标识符是一个或多个字母,数字或下划线字符(_)的序列,并且必须以字母或下划线开头。空格,标点符号和符号不能成为标识符的一部分。
但是,用于运算符重载的函数的名称可以包含字母,数字或下划线以外的字符,例如:
user_data_type operator+(const user_data_type & t) const;
这是标识符命名规则的例外还是用于运算符重载的函数名不被视为标识符?
从§3.1开始
名称是对标识符(2.11),操作员功能ID(13.5),文字操作员ID(13.5.8),转换功能ID(12.3.2)或模板ID(14.2)的使用。表示实体或标签(6.6.4,6.1)。
因此,如您所见,标识符有一些规则(变量/函数名称)。但是也有一些例外,并且运算符重载(operator-function-id)是其中之一,这意味着对其适用不同的规则。
从§13.5开始:
operator-function-id:运算 符
操作员:其中之一
新删除新[]删除[]
+-* /%ˆ&| 〜
!= <> + =-= * = / =%=
ˆ =&= | = << >> >> = << = ==!=
<=> = && || ++-,-> *->
()[]
因此,基本上也operator+
允许+ 。operator-
operator
any of the operators listed above
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句