首页 > 解决方案 > 点运算符 (.) 是“真实”运算符吗?

问题描述

根据我的理解,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什么(它不是原始数据类型,也不是对象,也不是文字)?!

标签: c++operators

解决方案


是的,它是会员访问运营商。在这种情况下,age是一个id-expression

没有什么说所有运算符都必须采用“原始数据类型”或对象或文字 - 并且可以允许它们在一侧但不允许在另一侧的那些。例如,赋值运算符( =) 可以在右侧使用文字,但不能在左侧使用。(foo = 0;根据实际foo情况可能有意义,但0 = foo;永远不可能有意义。)

Even::被认为是一个运算符(“范围解析”运算符),它通常与左侧的命名空间/类型名称和右侧的命名空间/类型/成员名称一起使用。


推荐阅读