标识符规则是否适用于运算符重载功能?

Stackerjoe

根据C ++标识符的命名规则:

有效标识符是一个或多个字母,数字或下划线字符(_)的序列,并且必须以字母或下划线开头。空格,标点符号和符号不能成为标识符的一部分。

但是,用于运算符重载的函数的名称可以包含字母,数字或下划线以外的字符,例如:

user_data_type operator+(const user_data_type & t) const;

这是标识符命名规则的例外还是用于运算符重载的函数名不被视为标识符?

火箭1111

从§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-operatorany of the operators listed above

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

标识符规则是否适用于运算符重载功能?

来自分类Dev

尽管实现了专用的非模板功能,std :: endl不适用于重载的运算符<<

来自分类Dev

适用于Any的Rust管道运算符(通过重载运算符)

来自分类Dev

Fortran派生类型:重载的赋值运算符不适用于'PARAMETER'属性

来自分类Dev

Ruby运算符重载不适用于自定义类对象

来自分类Dev

我的重载 [] 运算符不适用于伪 3D 数组

来自分类Dev

右移运算符不适用于标志枚举

来自分类Dev

MYSQL <=运算符不适用于9999值

来自分类Dev

scrollTop不适用于2个运算符

来自分类Dev

运算符 % 不适用于空值

来自分类Dev

while 循环不适用于 == 运算符

来自分类Dev

sass 乘法运算符不适用于 %

来自分类Dev

模数运算符 (%) 不适用于大数字

来自分类Dev

是否有解决方法,使类运算符适用于内置类型

来自分类Dev

python中是否有适用于数组的二进制或运算符?

来自分类Dev

是否有解决方法,使类运算符适用于内置类型

来自分类Dev

运算符“已定义”需要标识符ios

来自分类Dev

未绑定标识符球拍运算符

来自分类Dev

赋值运算符和变量标识符

来自分类Dev

有没有办法使三元运算符适用于Cloud Firestore安全规则?

来自分类Dev

使用LIKE运算符:适用于SQL Server,但不适用于SQLite

来自分类Dev

运算符适用于XamMac,但不适用于MonoMac

来自分类Dev

范围过滤器不适用于“gt”运算符,但适用于“lt”

来自分类Dev

赋值运算符重载/检索功能

来自分类Dev

赋值运算符重载/检索功能

来自分类Dev

运算符重载VS模板功能

来自分类Dev

模糊运算符<<用于模板重载

来自分类Dev

用于处理图像的重载[] []运算符

来自分类Dev

Typescript是否有运算符重载?

Related 相关文章

热门标签

归档