c++ - 点运算符 (.) 是“真实”运算符吗?
问题描述
根据我的理解,C++ 中的运算符采用可以是原始数据类型或对象或文字的操作数。
例如,+
运算符采用两个操作数(可以是原始数据类型或对象或文字),例如:
result1 = an_int_var + a_float_var;
result2 = obj1 + obj2;
result3 = 2 + 5;
result4 = obj1 + an_int_var;
result5 = obj1 + 5;
result6 = an_int_var + 5
但是我注意到该.
运算符采用的操作数既不是原始数据类型也不是对象也不是文字,例如:
var1 = obj1.age;
obj1
是一个对象,但究竟是age
什么(它不是原始数据类型,也不是对象,也不是文字)?!
解决方案
是的,它是会员访问运营商。在这种情况下,age
是一个id-expression。
没有什么说所有运算符都必须采用“原始数据类型”或对象或文字 - 并且可以允许它们在一侧但不允许在另一侧的那些。例如,赋值运算符( =
) 可以在右侧使用文字,但不能在左侧使用。(foo = 0;
根据实际foo
情况可能有意义,但0 = foo;
永远不可能有意义。)
Even::
被认为是一个运算符(“范围解析”运算符),它通常与左侧的命名空间/类型名称和右侧的命名空间/类型/成员名称一起使用。
推荐阅读
- javascript - 在节点中使用 cherio 和请求获取雅虎财务信息
- haskell - 如何修复 Haskell 中的错误“非详尽模式”
- javascript - 包含来自 Json 数组的数据的表,如何添加多个子行
- python-3.x - Python中是否有一种方法可以“检查”文本文件是否已被修改或附加?
- r - 这是否模拟了指定的时间序列?
- lisp - “冒号后的非法终止字符:#\”在portacle中,但代码中没有冒号
- c++ - 如何使用断言对数组进行测试?
- haskell - 如何在 Dhall 中表示“Data.Map Text Text”?
- r - purrr 与 pluck 相对(丢弃元素)+ 在 pluck 中保留列表结构
- javascript - 如何用玩笑测试更新组件状态的函数