<html lang="en"> <head> <title>Operator Overloading - GNU Octave</title> <meta http-equiv="Content-Type" content="text/html"> <meta name="description" content="GNU Octave"> <meta name="generator" content="makeinfo 4.13"> <link title="Top" rel="start" href="index.html#Top"> <link rel="up" href="Overloading-Objects.html#Overloading-Objects" title="Overloading Objects"> <link rel="prev" href="Function-Overloading.html#Function-Overloading" title="Function Overloading"> <link rel="next" href="Precedence-of-Objects.html#Precedence-of-Objects" title="Precedence of Objects"> <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage"> <meta http-equiv="Content-Style-Type" content="text/css"> <style type="text/css"><!-- pre.display { font-family:inherit } pre.format { font-family:inherit } pre.smalldisplay { font-family:inherit; font-size:smaller } pre.smallformat { font-family:inherit; font-size:smaller } pre.smallexample { font-size:smaller } pre.smalllisp { font-size:smaller } span.sc { font-variant:small-caps } span.roman { font-family:serif; font-weight:normal; } span.sansserif { font-family:sans-serif; font-weight:normal; } --></style> </head> <body> <div class="node"> <a name="Operator-Overloading"></a> <p> Next: <a rel="next" accesskey="n" href="Precedence-of-Objects.html#Precedence-of-Objects">Precedence of Objects</a>, Previous: <a rel="previous" accesskey="p" href="Function-Overloading.html#Function-Overloading">Function Overloading</a>, Up: <a rel="up" accesskey="u" href="Overloading-Objects.html#Overloading-Objects">Overloading Objects</a> <hr> </div> <h4 class="subsection">34.4.2 Operator Overloading</h4> <p><a name="index-addition-3003"></a><a name="index-and-operator-3004"></a><a name="index-arithmetic-operators-3005"></a><a name="index-boolean-expressions-3006"></a><a name="index-boolean-operators-3007"></a><a name="index-comparison-expressions-3008"></a><a name="index-complex_002dconjugate-transpose-3009"></a><a name="index-division-3010"></a><a name="index-equality-operator-3011"></a><a name="index-equality_002c-tests-for-3012"></a><a name="index-exponentiation-3013"></a><a name="index-expressions_002c-boolean-3014"></a><a name="index-expressions_002c-comparison-3015"></a><a name="index-expressions_002c-logical-3016"></a><a name="index-greater-than-operator-3017"></a><a name="index-Hermitian-operator-3018"></a><a name="index-less-than-operator-3019"></a><a name="index-logical-expressions-3020"></a><a name="index-logical-operators-3021"></a><a name="index-matrix-multiplication-3022"></a><a name="index-multiplication-3023"></a><a name="index-negation-3024"></a><a name="index-not-operator-3025"></a><a name="index-operators_002c-arithmetic-3026"></a><a name="index-operators_002c-boolean-3027"></a><a name="index-operators_002c-logical-3028"></a><a name="index-operators_002c-relational-3029"></a><a name="index-or-operator-3030"></a><a name="index-quotient-3031"></a><a name="index-relational-operators-3032"></a><a name="index-subtraction-3033"></a><a name="index-tests-for-equality-3034"></a><a name="index-transpose-3035"></a><a name="index-transpose_002c-complex_002dconjugate-3036"></a><a name="index-unary-minus-3037"></a> <div class="float"> <a name="tab_003aoverload_005fops"></a><a name="index-g_t_002b-3038"></a><a name="index-g_t_002d-3039"></a><a name="index-g_t_002e_002a-3040"></a><a name="index-g_t_002a-3041"></a><a name="index-g_t_002e_002f-3042"></a><a name="index-g_t_002f-3043"></a><a name="index-g_t_002e_005c-3044"></a><a name="index-g_t_005c-3045"></a><a name="index-g_t_002e_005e-3046"></a><a name="index-g_t_005e-3047"></a><a name="index-g_t_003c-3048"></a><a name="index-g_t_003c_003d-3049"></a><a name="index-g_t_003e-3050"></a><a name="index-g_t_003e_003d-3051"></a><a name="index-g_t_003d_003d-3052"></a><a name="index-g_t_0021_003d-3053"></a><a name="index-g_t_007e_003d-3054"></a><a name="index-g_t_0026-3055"></a><a name="index-g_t_007c-3056"></a><a name="index-g_t_0021-3057"></a><a name="index-g_t_0027-3058"></a><a name="index-g_t_002e_0027-3059"></a><a name="index-g_t_003a-3060"></a><a name="index-g_t_003c-3061"></a> <p><table summary=""><tr align="left"><th valign="top" width="10%"></th><th valign="top" width="20%">Operation </th><th valign="top" width="20%">Method </th><th valign="top" width="40%">Description </th><th valign="top" width="10%"> <br></th></tr><tr align="left"><td valign="top" width="10%"></td><td valign="top" width="20%">a + b </td><td valign="top" width="20%">plus (a, b) </td><td valign="top" width="40%">Binary addition </td><td valign="top" width="10%"> <br></td></tr><tr align="left"><td valign="top" width="10%"></td><td valign="top" width="20%">a - b </td><td valign="top" width="20%">minus (a, b) </td><td valign="top" width="40%">Binary subtraction operator </td><td valign="top" width="10%"> <br></td></tr><tr align="left"><td valign="top" width="10%"></td><td valign="top" width="20%">+ a </td><td valign="top" width="20%">uplus (a) </td><td valign="top" width="40%">Unary addition operator </td><td valign="top" width="10%"> <br></td></tr><tr align="left"><td valign="top" width="10%"></td><td valign="top" width="20%">- a </td><td valign="top" width="20%">uminus (a) </td><td valign="top" width="40%">Unary subtraction operator </td><td valign="top" width="10%"> <br></td></tr><tr align="left"><td valign="top" width="10%"></td><td valign="top" width="20%">a .* b </td><td valign="top" width="20%">times (a, b) </td><td valign="top" width="40%">Element-wise multiplication operator </td><td valign="top" width="10%"> <br></td></tr><tr align="left"><td valign="top" width="10%"></td><td valign="top" width="20%">a * b </td><td valign="top" width="20%">mtimes (a, b) </td><td valign="top" width="40%">Matrix multiplication operator </td><td valign="top" width="10%"> <br></td></tr><tr align="left"><td valign="top" width="10%"></td><td valign="top" width="20%">a ./ b </td><td valign="top" width="20%">rdivide (a, b) </td><td valign="top" width="40%">Element-wise right division operator </td><td valign="top" width="10%"> <br></td></tr><tr align="left"><td valign="top" width="10%"></td><td valign="top" width="20%">a / b </td><td valign="top" width="20%">mrdivide (a, b) </td><td valign="top" width="40%">Matrix right division operator </td><td valign="top" width="10%"> <br></td></tr><tr align="left"><td valign="top" width="10%"></td><td valign="top" width="20%">a .\ b </td><td valign="top" width="20%">ldivide (a, b) </td><td valign="top" width="40%">Element-wise left division operator </td><td valign="top" width="10%"> <br></td></tr><tr align="left"><td valign="top" width="10%"></td><td valign="top" width="20%">a \ b </td><td valign="top" width="20%">mldivide (a, b) </td><td valign="top" width="40%">Matrix left division operator </td><td valign="top" width="10%"> <br></td></tr><tr align="left"><td valign="top" width="10%"></td><td valign="top" width="20%">a .^ b </td><td valign="top" width="20%">power (a, b) </td><td valign="top" width="40%">Element-wise power operator </td><td valign="top" width="10%"> <br></td></tr><tr align="left"><td valign="top" width="10%"></td><td valign="top" width="20%">a ^ b </td><td valign="top" width="20%">mpower (a, b) </td><td valign="top" width="40%">Matrix power operator </td><td valign="top" width="10%"> <br></td></tr><tr align="left"><td valign="top" width="10%"></td><td valign="top" width="20%">a < b </td><td valign="top" width="20%">lt (a, b) </td><td valign="top" width="40%">Less than operator </td><td valign="top" width="10%"> <br></td></tr><tr align="left"><td valign="top" width="10%"></td><td valign="top" width="20%">a <= b </td><td valign="top" width="20%">le (a, b) </td><td valign="top" width="40%">Less than or equal to operator </td><td valign="top" width="10%"> <br></td></tr><tr align="left"><td valign="top" width="10%"></td><td valign="top" width="20%">a > b </td><td valign="top" width="20%">gt (a, b) </td><td valign="top" width="40%">Greater than operator </td><td valign="top" width="10%"> <br></td></tr><tr align="left"><td valign="top" width="10%"></td><td valign="top" width="20%">a >= b </td><td valign="top" width="20%">ge (a, b) </td><td valign="top" width="40%">Greater than or equal to operator </td><td valign="top" width="10%"> <br></td></tr><tr align="left"><td valign="top" width="10%"></td><td valign="top" width="20%">a == b </td><td valign="top" width="20%">eq (a, b) </td><td valign="top" width="40%">Equal to operator </td><td valign="top" width="10%"> <br></td></tr><tr align="left"><td valign="top" width="10%"></td><td valign="top" width="20%">a != b </td><td valign="top" width="20%">ne (a, b) </td><td valign="top" width="40%">Not equal to operator </td><td valign="top" width="10%"> <br></td></tr><tr align="left"><td valign="top" width="10%"></td><td valign="top" width="20%">a & b </td><td valign="top" width="20%">and (a, b) </td><td valign="top" width="40%">Logical and operator </td><td valign="top" width="10%"> <br></td></tr><tr align="left"><td valign="top" width="10%"></td><td valign="top" width="20%">a | b </td><td valign="top" width="20%">or (a, b) </td><td valign="top" width="40%">Logical or operator </td><td valign="top" width="10%"> <br></td></tr><tr align="left"><td valign="top" width="10%"></td><td valign="top" width="20%">! b </td><td valign="top" width="20%">not (a) </td><td valign="top" width="40%">Logical not operator </td><td valign="top" width="10%"> <br></td></tr><tr align="left"><td valign="top" width="10%"></td><td valign="top" width="20%">a' </td><td valign="top" width="20%">ctranspose (a) </td><td valign="top" width="40%">Complex conjugate transpose operator </td><td valign="top" width="10%"> <br></td></tr><tr align="left"><td valign="top" width="10%"></td><td valign="top" width="20%">a.' </td><td valign="top" width="20%">transpose (a) </td><td valign="top" width="40%">Transpose operator </td><td valign="top" width="10%"> <br></td></tr><tr align="left"><td valign="top" width="10%"></td><td valign="top" width="20%">a : b </td><td valign="top" width="20%">colon (a, b) </td><td valign="top" width="40%">Two element range operator </td><td valign="top" width="10%"> <br></td></tr><tr align="left"><td valign="top" width="10%"></td><td valign="top" width="20%">a : b : c </td><td valign="top" width="20%">colon (a, b, c) </td><td valign="top" width="40%">Three element range operator </td><td valign="top" width="10%"> <br></td></tr><tr align="left"><td valign="top" width="10%"></td><td valign="top" width="20%">[a, b] </td><td valign="top" width="20%">horzcat (a, b) </td><td valign="top" width="40%">Horizontal concatenation operator </td><td valign="top" width="10%"> <br></td></tr><tr align="left"><td valign="top" width="10%"></td><td valign="top" width="20%">[a; b] </td><td valign="top" width="20%">vertcat (a, b) </td><td valign="top" width="40%">Vertical concatenation operator </td><td valign="top" width="10%"> <br></td></tr><tr align="left"><td valign="top" width="10%"></td><td valign="top" width="20%">a(s_1, <small class="dots">...</small>, s_n) </td><td valign="top" width="20%">subsref (a, s) </td><td valign="top" width="40%">Subscripted reference </td><td valign="top" width="10%"> <br></td></tr><tr align="left"><td valign="top" width="10%"></td><td valign="top" width="20%">a(s_1, <small class="dots">...</small>, s_n) = b </td><td valign="top" width="20%">subsasgn (a, s, b) </td><td valign="top" width="40%">Subscripted assignment </td><td valign="top" width="10%"> <br></td></tr><tr align="left"><td valign="top" width="10%"></td><td valign="top" width="20%">b (a) </td><td valign="top" width="20%">subsindex (a) </td><td valign="top" width="40%">Convert to zero-based index </td><td valign="top" width="10%"> <br></td></tr><tr align="left"><td valign="top" width="10%"></td><td valign="top" width="20%"><dfn>display</dfn> </td><td valign="top" width="20%">display (a) </td><td valign="top" width="40%">Commandline display function </td><td valign="top" width="10%"> <br></td></tr></table> <p><strong class="float-caption">Table 34.1: Available overloaded operators and their corresponding class method</strong></p></div> <p>An example <code>mtimes</code> method for our polynomial class might look like <pre class="example"><pre class="verbatim"> function y = mtimes (a, b) y = polynomial (conv (double(a),double(b))); endfunction </pre> </pre> </body></html>