[]是下标运算符,()是函数调用运算符。自增自减运算符的前置和后置形式都可以重载。长度运算符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 属性的,默认不能在类的外部访问。->、下标运算符[ ]、函数调用运算符( )、赋值运算符=只能以成员函数的形式重载。
版权说明:Copyright © 广州松河信息科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州松河信息科技有限公司 版权所有