Operator Overloading - GNU Octave
Description: GNU Octave

Next: Precedence of Objects, Previous: Function Overloading, Up: Overloading Objects

#### 33.4.2 Operator Overloading

| Operation | Method | Description |
--- | --- | --- | --- | ---
| a + b | plus (a, b) | Binary addition |
| a - b | minus (a, b) | Binary subtraction operator |
| + a | uplus (a) | Unary addition operator |
| - a | uminus (a) | Unary subtraction operator |
| a .* b | times (a, b) | Element-wise multiplication operator |
| a * b | mtimes (a, b) | Matrix multiplication operator |
| a ./ b | rdivide (a, b) | Element-wise right division operator |
| a / b | mrdivide (a, b) | Matrix right division operator |
| a .\ b | ldivide (a, b) | Element-wise left division operator |
| a \ b | mldivide (a, b) | Matrix left division operator |
| a .^ b | ldivide (a, b) | Element-wise power operator |
| a ^ b | mldivide (a, b) | Matrix power operator |
| a < b | lt (a, b) | Less than operator |
| a <= b | le (a, b) | Less than or equal to operator |
| a > b | gt (a, b) | Greater than operator |
| a >= b | ge (a, b) | Greater than or equal to operator |
| a == b | eq (a, b) | Equal to operator |
| a != b | ne (a, b) | Not equal to operator |
| a \& b | and (a, b) | Logical and operator |
| a | b | or (a, b) | Logical or operator |
| ! b | not (a) | Logical not operator |
| a' | ctranspose (a) | Complex conjugate transpose operator |
| a.' | transpose (a) | Transpose operator |
| a : b | colon (a, b) | Two element range operator |
| a : b : c | colon (a, b, c) | Three element range operator |
| [a, b] | horzcat (a, b) | Horizontal concatenation operator |
| [a; b] | vertcat (a, b) | Vertical concatenation operator |
| a(s_1, ..., s_n) | subsref (a, s) | Subscripted reference |
| a(s_1, ..., s_n) = b | subsasgn (a, s, b) | Subscripted assignment |
| b (a) | subsindex (a) | Convert to zero-based index |
| display | display (a) | Commandline display function |

Table 33.1: Available overloaded operators and their corresponding class method

An example `mtimes` method for our polynomial class might look like

         function y = mtimes (a, b)
           y = polynomial (conv (double(a),double(b)));
         endfunction