1、程序员用complex::operator+()和complex::operator*()分别表示+和*的含义。当b和c的类型是complex时,b+c等价于b.operator+(c)。
2、对于任意一种二元运算符@,aa@bb可以理解成aa.operator@(bb)或者operator@(aa,bb)。对于任意一元后置运算符@,aa@可以理解成aa.operator@(int)或者operator@(aa,int)。
3、考虑二元运算符@的情况。假设x的类型是X,y的类型是Y,则x@y的解析过程是:
- 如果X是一个类,查找X是否有成员operator@或者X的基类是否有成员operator@;
- 在x@y的上下文中查找是否有operator@的声明;
- 如果X定义在名字空间N中,在N的范围内查找operator@的声明;
- 如果Y定义在名字空间M中,在M的范围内查找operator@的声明。