有时候自己写一个类,需要重载运算符,但对于一些操作符(如==、<、>等),可以在类里写,也可以在类外写。那么 C++ 编译器会去怎么调用呢? 首先,我们知道,“重载” 机制可以允许多个函数有相同的函数名,但参数列表必须不同。C++编译器经过名字改编(name mangling),可以在调用时依据所传实参找到“符合”的函数实体进行调用。而运算符重载亦是如此。 首先,我们有一个类: class CMyCls { public: bool operator == (const CMyCls& rhs); // 1. bool operator ==