1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
|
<!DOCTYPE html>
<html>
<!-- Created by GNU Texinfo 7.1.1, https://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Operator Overloading (GNU Octave (version 10.3.0))</title>
<meta name="description" content="Operator Overloading (GNU Octave (version 10.3.0))">
<meta name="keywords" content="Operator Overloading (GNU Octave (version 10.3.0))">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link href="index.html" rel="start" title="Top">
<link href="Concept-Index.html" rel="index" title="Concept Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Overloading-Objects.html" rel="up" title="Overloading Objects">
<link href="Precedence-of-Objects.html" rel="next" title="Precedence of Objects">
<link href="Function-Overloading.html" rel="prev" title="Function Overloading">
<style type="text/css">
<!--
a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
div.example {margin-left: 3.2em}
span:hover a.copiable-link {visibility: visible}
-->
</style>
<link rel="stylesheet" type="text/css" href="octave.css">
</head>
<body lang="en">
<div class="subsection-level-extent" id="Operator-Overloading">
<div class="nav-panel">
<p>
Next: <a href="Precedence-of-Objects.html" accesskey="n" rel="next">Precedence of Objects</a>, Previous: <a href="Function-Overloading.html" accesskey="p" rel="prev">Function Overloading</a>, Up: <a href="Overloading-Objects.html" accesskey="u" rel="up">Overloading Objects</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<h4 class="subsection" id="Operator-Overloading-1"><span>34.4.2 Operator Overloading<a class="copiable-link" href="#Operator-Overloading-1"> ¶</a></span></h4>
<a class="index-entry-id" id="index-addition-1"></a>
<a class="index-entry-id" id="index-and-operator-1"></a>
<a class="index-entry-id" id="index-arithmetic-operators-1"></a>
<a class="index-entry-id" id="index-boolean-expressions-1"></a>
<a class="index-entry-id" id="index-boolean-operators-1"></a>
<a class="index-entry-id" id="index-comparison-expressions-1"></a>
<a class="index-entry-id" id="index-complex_002dconjugate-transpose-1"></a>
<a class="index-entry-id" id="index-division-1"></a>
<a class="index-entry-id" id="index-equality-operator-1"></a>
<a class="index-entry-id" id="index-equality_002c-tests-for-1"></a>
<a class="index-entry-id" id="index-exponentiation-1"></a>
<a class="index-entry-id" id="index-expressions_002c-boolean-1"></a>
<a class="index-entry-id" id="index-expressions_002c-comparison-1"></a>
<a class="index-entry-id" id="index-expressions_002c-logical-1"></a>
<a class="index-entry-id" id="index-greater-than-operator-1"></a>
<a class="index-entry-id" id="index-Hermitian-operator-1"></a>
<a class="index-entry-id" id="index-less-than-operator-1"></a>
<a class="index-entry-id" id="index-logical-expressions-1"></a>
<a class="index-entry-id" id="index-logical-operators-1"></a>
<a class="index-entry-id" id="index-matrix-multiplication-1"></a>
<a class="index-entry-id" id="index-multiplication-1"></a>
<a class="index-entry-id" id="index-negation-1"></a>
<a class="index-entry-id" id="index-not-operator-1"></a>
<a class="index-entry-id" id="index-operators_002c-arithmetic-1"></a>
<a class="index-entry-id" id="index-operators_002c-boolean-1"></a>
<a class="index-entry-id" id="index-operators_002c-logical-1"></a>
<a class="index-entry-id" id="index-operators_002c-relational-1"></a>
<a class="index-entry-id" id="index-or-operator-1"></a>
<a class="index-entry-id" id="index-quotient-1"></a>
<a class="index-entry-id" id="index-relational-operators-1"></a>
<a class="index-entry-id" id="index-subtraction-1"></a>
<a class="index-entry-id" id="index-tests-for-equality-1"></a>
<a class="index-entry-id" id="index-transpose-1"></a>
<a class="index-entry-id" id="index-transpose_002c-complex_002dconjugate-1"></a>
<a class="index-entry-id" id="index-unary-minus-1"></a>
<p>The following table shows, for each built-in numerical operation, the
corresponding function name to use when providing an overloaded method for a
user class.
</p>
<div class="float" id="tab_003aoverload_005fops">
<a class="index-entry-id" id="index-_002b-4"></a>
<a class="index-entry-id" id="index-_002d-4"></a>
<a class="index-entry-id" id="index-_002e_002a-2"></a>
<a class="index-entry-id" id="index-_002a-2"></a>
<a class="index-entry-id" id="index-_002e_002f-2"></a>
<a class="index-entry-id" id="index-_002f-2"></a>
<a class="index-entry-id" id="index-_002e_005c-2"></a>
<a class="index-entry-id" id="index-_005c-2"></a>
<a class="index-entry-id" id="index-_002e_005e-2"></a>
<a class="index-entry-id" id="index-_005e-2"></a>
<a class="index-entry-id" id="index-_003c-2"></a>
<a class="index-entry-id" id="index-_003c_003d-2"></a>
<a class="index-entry-id" id="index-_003e-2"></a>
<a class="index-entry-id" id="index-_003e_003d-2"></a>
<a class="index-entry-id" id="index-_003d_003d-2"></a>
<a class="index-entry-id" id="index-_0021_003d-2"></a>
<a class="index-entry-id" id="index-_007e_003d-2"></a>
<a class="index-entry-id" id="index-_0026-2"></a>
<a class="index-entry-id" id="index-_007c-2"></a>
<a class="index-entry-id" id="index-_0021-2"></a>
<a class="index-entry-id" id="index-_0027-4"></a>
<a class="index-entry-id" id="index-_002e_0027-2"></a>
<a class="index-entry-id" id="index-_003a-1"></a>
<a class="index-entry-id" id="index-_003c-3"></a>
<table class="multitable">
<thead><tr><th>Operation</th><th>Method</th><th>Description</th></tr></thead>
<tbody><tr><td><code class="code">a + b</code></td><td><code class="code">plus (a, b)</code></td><td>Binary addition</td></tr>
<tr><td><code class="code">a - b</code></td><td><code class="code">minus (a, b)</code></td><td>Binary subtraction</td></tr>
<tr><td><code class="code">+a</code></td><td><code class="code">uplus (a)</code></td><td>Unary addition</td></tr>
<tr><td><code class="code">-a</code></td><td><code class="code">uminus (a)</code></td><td>Unary subtraction</td></tr>
<tr><td><code class="code">a .* b</code></td><td><code class="code">times (a, b)</code></td><td>Element-wise multiplication</td></tr>
<tr><td><code class="code">a * b</code></td><td><code class="code">mtimes (a, b)</code></td><td>Matrix multiplication</td></tr>
<tr><td><code class="code">a ./ b</code></td><td><code class="code">rdivide (a, b)</code></td><td>Element-wise right division</td></tr>
<tr><td><code class="code">a / b</code></td><td><code class="code">mrdivide (a, b)</code></td><td>Matrix right division</td></tr>
<tr><td><code class="code">a .\ b</code></td><td><code class="code">ldivide (a, b)</code></td><td>Element-wise left division</td></tr>
<tr><td><code class="code">a \ b</code></td><td><code class="code">mldivide (a, b)</code></td><td>Matrix left division</td></tr>
<tr><td><code class="code">a .^ b</code></td><td><code class="code">power (a, b)</code></td><td>Element-wise power</td></tr>
<tr><td><code class="code">a ^ b</code></td><td><code class="code">mpower (a, b)</code></td><td>Matrix power</td></tr>
<tr><td><code class="code">a < b</code></td><td><code class="code">lt (a, b)</code></td><td>Less than</td></tr>
<tr><td><code class="code">a <= b</code></td><td><code class="code">le (a, b)</code></td><td>Less than or equal to</td></tr>
<tr><td><code class="code">a > b</code></td><td><code class="code">gt (a, b)</code></td><td>Greater than</td></tr>
<tr><td><code class="code">a >= b</code></td><td><code class="code">ge (a, b)</code></td><td>Greater than or equal to</td></tr>
<tr><td><code class="code">a == b</code></td><td><code class="code">eq (a, b)</code></td><td>Equal to</td></tr>
<tr><td><code class="code">a != b</code></td><td><code class="code">ne (a, b)</code></td><td>Not equal to</td></tr>
<tr><td><code class="code">a & b</code></td><td><code class="code">and (a, b)</code></td><td>Logical and</td></tr>
<tr><td><code class="code">a | b</code></td><td><code class="code">or (a, b)</code></td><td>Logical or</td></tr>
<tr><td><code class="code">!a</code></td><td><code class="code">not (a)</code></td><td>Logical not</td></tr>
<tr><td><code class="code">a'</code></td><td><code class="code">ctranspose (a)</code></td><td>Complex conjugate transpose</td></tr>
<tr><td><code class="code">a.'</code></td><td><code class="code">transpose (a)</code></td><td>Transpose</td></tr>
<tr><td><code class="code">a:b</code></td><td><code class="code">colon (a, b)</code></td><td>Two element range</td></tr>
<tr><td><code class="code">a:b:c</code></td><td><code class="code">colon (a, b, c)</code></td><td>Three element range</td></tr>
<tr><td><code class="code">[a, b]</code></td><td><code class="code">horzcat (a, b)</code></td><td>Horizontal concatenation</td></tr>
<tr><td><code class="code">[a; b]</code></td><td><code class="code">vertcat (a, b)</code></td><td>Vertical concatenation</td></tr>
<tr><td><code class="code">a(s<em class="math">_1</em>,…,s<em class="math">_n</em>)</code></td><td><code class="code">subsref (a, s)</code></td><td>Subscripted reference</td></tr>
<tr><td><code class="code">a(s<em class="math">_1</em>,…,s<em class="math">_n</em>) = b</code></td><td><code class="code">subsasgn (a, s, b)</code></td><td>Subscripted assignment</td></tr>
<tr><td><code class="code">b(a)</code></td><td><code class="code">subsindex (a)</code></td><td>Convert object to index</td></tr>
<tr><td><code class="code">disp</code></td><td><code class="code">disp (a)</code></td><td>Object display</td></tr>
</tbody>
</table>
<div class="caption"><p><strong class="strong">Table 34.1: </strong>Available overloaded operators and their corresponding class method</p></div></div>
<p>An example <code class="code">mtimes</code> method for the polynomial class might look like
</p>
<div class="example">
<div class="group"><pre class="verbatim">function p = mtimes (a, b)
p = polynomial (conv (double (a), double (b)));
endfunction
</pre></div></div>
</div>
<hr>
<div class="nav-panel">
<p>
Next: <a href="Precedence-of-Objects.html">Precedence of Objects</a>, Previous: <a href="Function-Overloading.html">Function Overloading</a>, Up: <a href="Overloading-Objects.html">Overloading Objects</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html" title="Index" rel="index">Index</a>]</p>
</div>
</body>
</html>
|