c++怎样重载减法运算符达到字符串能相减吗相减的目的?

(1)C++不允许用户自己定义新的运算符只能对已有的C++运算符进行重载。例如有人觉得BASIC中用“* *”作为幂运算符很方便,也想在C++中将“* *”定义为幂运算符用“3* *5”表示35,这昰不行的

(2)C++允许重载的运算符C++中绝大部分运算符都是可以被重载的。

不能重载的运算符只有5个:

前两个运算符不能重载是为了保证访問成员的功能不能被改变域运算符合sizeof运算符的运算对象是类型而不是变量或一般表达式,不具备重载的特征

(3)重载不能改变运算符運算对象(即操作数)的个数。如关系运算符“>”和“<”等是双目运算符,重载后仍为双目运算符需要两个参数。运算符”+“”-“,”*“”&“等既可以作为单目运算符,也可以作为双目运算符可以分别将它们重载为单目运算符或双目运算符。

(4)重载不能改变运算符的优先级别例如”*“和”/“优先级高于”+“和”-“,不论怎样进行重载各运算符之间的优先级不会改变。有时在程序中希望改变某运算符的优先级也只能使用加括号的方法强制改变重载运算符的运算顺序。

(5)重载不能改变运算符的结合性如,复制运算符”=“昰右结合性(自右至左)重载后仍为右结合性。

(6)重载运算符的函数不能有默认的参数否则就改变了运算符参数的个数与前面第(3)点矛盾。

(7)重载的运算符必须和用户定义的自定义类型的对象一起使用其参数至少应有一个是类对象(或类对象的引用)。也就是說参数不能全部是C++的标准类型,以防止用户修改用于标准类型数据成员的运算符的性质如下面这样是不对的:

原来运算符+的作用是对兩个数相加,现在企图通过重载使它的作用改为两个数相减

如果允许这样重载的话,如果有表达式4+3它的结果是7还是1呢?显然这是绝對要禁止的。

(8)用于类对象的运算符一般必须重载但有两个例外,运算符”=“和运算符”&“不必用户重载复制运算符”=“可以用于烸一个类对象,可以用它在同类对象之间相互赋值因为系统已为每一个新声明的类重载了一个赋值运算符,它的作用是逐个复制类中的數据成员

地址运算符&也不必重载它能返回类对象在内存中的起始地址。

(9)应当使重载运算符的功能类似于该运算符作用于标准类型数據时候时所实现的功能例如,我们会去重载”+“以实现对象的相加而不会去重载”+“以实现对象相减的功能,因为这样不符合我们对”+“原来的认知

(10)运算符重载函数可以是类的成员函数,也可以是类的友元函数还可以是既非类的成员函数也不是友元函数的普通函数。

我要回帖

更多关于 字符串能相减吗 的文章

 

随机推荐