[]
是下标运算符,()
是函数调用运算符。自增自减运算符的前置和后置形式都可以重载。长度运算符sizeof
、条件运算符: ?
、成员选择符.
和域解析运算符::
不能被重载。+
号和*
号,并且 c1、c2、c3、c4 都是 complex 类的对象,那么下面的语句:
c4 = c1 + c2 * c3;
等价于:c4 = c1 + ( c2 * c3 );
乘法的优先级仍然高于加法,并且它们仍然是二元运算符。~
号右边只有一个操作数,+
号总是出现在两个操作数之间,重载后也必须如此。complex operator+(const complex & A) const;
当执行:c3 = c1 + c2;
会被转换为:c3 = c1.operator+(c2);
通过 this 指针隐式的访问 c1 的成员变量。int operator + (int a,int b){ return (a-b); }
+
号原来是对两个数相加,现在企图通过重载使它的作用改为两个数相减, 如果允许这样重载的话,那么表达式4+3
的结果是 7 还是 1 呢?显然,这是绝对禁止的。complex operator+(int a, complex &c){ return complex(a+c.real, c.imag); }它的作用是使一个整数和一个复数相加。
+
号,并在 complex 类中将运算符重载函数声明为友元函数,因为该函数使用到了 complex 类的 m_real 和 m_imag 两个成员变量,它们都是 private 属性的,默认不能在类的外部访问。->
、下标运算符[ ]
、函数调用运算符( )
、赋值运算符=
只能以成员函数的形式重载。
本文链接:http://task.lmcjl.com/news/8658.html