August 2021
Intermediate to advanced
450 pages
4h 46m
Chinese
有些面向对象的语言允许你重载操作符。C++是其中的一个例子。操作符重载允许你修改一个操作符的含义。例如,当大多数人看到一个加号时,会假设它代表加法运算。如果你看到以下恒等式X=5+6;
你会认为X的值是11。在这种情况下你是对的。
然而,有时加号也会代表其他含义。例如下面的代码:
你可能期望Name等于Joe Smith。这里的加号被重载用来进行字符串连接操作。
字符串连接
将两个独立的字符串合并为一个新的单个字符串,称为字符串连接。
在字符串上下文中,加号并不表示整数或浮点数的加法操作,而是指字符串的连接。
那么矩阵加法呢?比如有以下代码:
这里的加号会进行矩阵加法,而不是整数或浮点数的加法。
重载是一种非常强大的机制。然而,它可以完全迷惑阅读和维护代码的人。事实上,开发人员也可能会迷惑自己。如果极端点,可以把加法操作修改为执行减法。操作符重载给予了你修改操作符含义的能力。因此,如果加号被修改为执行减法,以下的代码会导致X的值为-1:
面向对象的语言(比如Java和NET)不允许重载操作符。 ...
Read now
Unlock full access