Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
下标运算符后缀 C++标准使用下标定义后缀表达式的表达式。好的,这个操作符总是接受两个参数(第一个是指向T的指针,另一个是枚举或整数类型)。因此,它应该符合二进制运算符的条件_C++_Binary_Subscript - Fatal编程技术网

下标运算符后缀 C++标准使用下标定义后缀表达式的表达式。好的,这个操作符总是接受两个参数(第一个是指向T的指针,另一个是枚举或整数类型)。因此,它应该符合二进制运算符的条件

下标运算符后缀 C++标准使用下标定义后缀表达式的表达式。好的,这个操作符总是接受两个参数(第一个是指向T的指针,另一个是枚举或整数类型)。因此,它应该符合二进制运算符的条件,c++,binary,subscript,C++,Binary,Subscript,但是,并没有将其列为二进制运算符 所以问题是,什么是下标运算符?它是一元还是二元?当然,它不是一元的,因为它在$5.3中没有提到(至少是straigt-away) 当标准提到它在后缀表达式的上下文中的用法时,它意味着什么?我倾向于同意你的观点,操作符[]是严格意义上的二进制操作符,因为它确实包含两个参数:对对象的引用(可能是隐式的)和其他类型的值(不一定是枚举的或整数的)。但是,由于它是一个括号运算符,您可能会说标记序列[x],其中x可能是任何有效的下标表达式,在抽象意义上符合后缀一元运算符的条

但是,并没有将其列为二进制运算符

所以问题是,什么是下标运算符?它是一元还是二元?当然,它不是一元的,因为它在$5.3中没有提到(至少是straigt-away)


当标准提到它在后缀表达式的上下文中的用法时,它意味着什么?

我倾向于同意你的观点,
操作符[]
是严格意义上的二进制操作符,因为它确实包含两个参数:对对象的引用(可能是隐式的)和其他类型的值(不一定是枚举的或整数的)。但是,由于它是一个括号运算符,您可能会说标记序列
[x]
,其中
x
可能是任何有效的下标表达式,在抽象意义上符合后缀一元运算符的条件;想想咖喱吧


也可以说,不能重载全局<代码>运算符[con],(Cistc C&,SsieZHT)< /> >。编译器抱怨<代码>运算符[]/Cord>必须是非静态成员函数。

< P>如果你仔细查看它,将说明标准C++识别运算符[]是二进制运算符,正如你所说的。 一般来说,运算符[]是二进制的,尽管有可能使其成为一元运算符,但它应该始终在类内作为二进制使用,即使在类外它没有意义

这是很好的解释在我提供给你的链接。。。 请注意,有时许多程序员在重载运算符时没有考虑太多他们正在做的事情,有时以错误的方式重载运算符;编译器很容易接受这一点,但是,这可能不是重载该运算符的正确方式

遵循我提供给您的指南,是以正确方式做事的好方法


因此,始终要注意操作符重载而没有良好实践(超出标准)的示例,首先参考标准方法,并使用符合它们的示例。

您可以正确地认为
操作符[]
是一个二进制操作符,但它的特殊之处在于它还必须是一个成员函数

类似于
operator()

你可以读懂后缀表达式


我刚刚发现了一篇关于
运算符[]
和后缀表达式的有趣文章,

我认为[]是在上下文中使用的。第5.2.1节符号[]是在后缀表达式的上下文中使用的,该上下文与*((E1)+(E2))相同。在此上下文中,[]不是运算符。在第13.5.5节中,它用于表示下标运算符。在本例中,它是一个接受一个参数的运算符。例如,如果我写:

 x = a[2];
上述陈述的计算结果不一定是:

x = *(a + 2);
因为“a”可能是对象。如果a是对象类型,则在此上下文中,[]用作下标运算符

无论如何,这是我能从解决明显矛盾的标准中得出的最好的解释