gpt4 book ai didi

c++ - 是 。和 -> 在 C 和 C++ 中真的是运算符吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:53:45 24 4
gpt4 key购买 nike

您可能一直在努力,自己也在努力,那 .和 -> 是运算符,用于检索结构 (C) 或类 (C++) 的成员。

但是,我怀疑它们是运算符 - 因为,如果它们是运算符,它们的输入类型是什么?此外,两侧的标识符是相互依赖的 - 这是 + 运算符所缺乏的特征。

如果这是正确的 - 在什么意义上这些在实践中仍然被标记为运算符,以及它们在语言理论方面的正式定义是什么。

最佳答案

您假设唯一可以作为参数传递给运算符的类型是可以在语言中定义的类型。

我认为编译器可以识别的任何类型都可以作为参数传递,包括内部类型,例如“标识符”。该运算符在其 AST 表示中将有两个参数,这足以让您定义语义。

另一个论点是,语言理论可能会为您的词汇提供一组定义,但它不是唯一的定义。

例如,运算符(operator)可能是操作机器的人。该定义与编程理论无关,但它不会阻止我在特定领域语言中使用 for 关键字来表达与机器操作有关的内容。同样,术语“运算符”在数学中的定义比特定于编程理论的定义更广泛 - 并且该定义不会因为使用编程语言而简单地失效。

换句话说 - 如果您不称它为运算符,您称它为什么?

编辑

澄清一下,我的第一个论点是指使用运算符(调用)的语法。这些运算符有正确的参数,它们是标识符 - 成员名称 - C++ 语言无法使用数据类型来表达。 C++ 语言确实有成员指针,但它们与成员不同——就像变量与指向该变量的指针不同一样。

我假设这就是问题所指的。这些运算符的右参数具有无法用语言正常表达或操作的类型。

当该语法映射到重载的 operator-> 函数时会发生什么是另一回事。函数不是运算符 - 它只是运算符的实现方式。

关于c++ - 是 。和 -> 在 C 和 C++ 中真的是运算符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4294857/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com