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 162 163 164 165 166 167 168
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Operator Overloading (GNU Octave (version 6.2.0))</title>
<meta name="description" content="Operator Overloading (GNU Octave (version 6.2.0))">
<meta name="keywords" content="Operator Overloading (GNU Octave (version 6.2.0))">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<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.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
ul.no-bullet {list-style: none}
-->
</style>
<link rel="stylesheet" type="text/css" href="octave.css">
</head>
<body lang="en">
<span id="Operator-Overloading"></span><div class="header">
<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>
<span id="Operator-Overloading-1"></span><h4 class="subsection">34.4.2 Operator Overloading</h4>
<span id="index-addition-1"></span>
<span id="index-and-operator-1"></span>
<span id="index-arithmetic-operators-1"></span>
<span id="index-boolean-expressions-1"></span>
<span id="index-boolean-operators-1"></span>
<span id="index-comparison-expressions-1"></span>
<span id="index-complex_002dconjugate-transpose-1"></span>
<span id="index-division-1"></span>
<span id="index-equality-operator-1"></span>
<span id="index-equality_002c-tests-for-1"></span>
<span id="index-exponentiation-1"></span>
<span id="index-expressions_002c-boolean-1"></span>
<span id="index-expressions_002c-comparison-1"></span>
<span id="index-expressions_002c-logical-1"></span>
<span id="index-greater-than-operator-1"></span>
<span id="index-Hermitian-operator-1"></span>
<span id="index-less-than-operator-1"></span>
<span id="index-logical-expressions-1"></span>
<span id="index-logical-operators-1"></span>
<span id="index-matrix-multiplication-1"></span>
<span id="index-multiplication-1"></span>
<span id="index-negation-1"></span>
<span id="index-not-operator-1"></span>
<span id="index-operators_002c-arithmetic-1"></span>
<span id="index-operators_002c-boolean-1"></span>
<span id="index-operators_002c-logical-1"></span>
<span id="index-operators_002c-relational-1"></span>
<span id="index-or-operator-1"></span>
<span id="index-quotient-1"></span>
<span id="index-relational-operators-1"></span>
<span id="index-subtraction-1"></span>
<span id="index-tests-for-equality-1"></span>
<span id="index-transpose-1"></span>
<span id="index-transpose_002c-complex_002dconjugate-1"></span>
<span id="index-unary-minus-1"></span>
<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"><span id="tab_003aoverload_005fops"></span>
<span id="index-_002b-4"></span>
<span id="index-_002d-4"></span>
<span id="index-_002e_002a-2"></span>
<span id="index-_002a-2"></span>
<span id="index-_002e_002f-2"></span>
<span id="index-_002f-2"></span>
<span id="index-_002e_005c-2"></span>
<span id="index-_005c-2"></span>
<span id="index-_002e_005e-2"></span>
<span id="index-_005e-2"></span>
<span id="index-_003c-2"></span>
<span id="index-_003c_003d-2"></span>
<span id="index-_003e-2"></span>
<span id="index-_003e_003d-2"></span>
<span id="index-_003d_003d-2"></span>
<span id="index-_0021_003d-2"></span>
<span id="index-_007e_003d-2"></span>
<span id="index-_0026-2"></span>
<span id="index-_007c-2"></span>
<span id="index-_0021-2"></span>
<span id="index-_0027-4"></span>
<span id="index-_002e_0027-2"></span>
<span id="index-_003a-1"></span>
<span id="index-_003c-3"></span>
<table>
<thead><tr><th>Operation</th><th>Method</th><th>Description</th></tr></thead>
<tr><td><code>a + b</code></td><td><code>plus (a, b)</code></td><td>Binary addition</td></tr>
<tr><td><code>a - b</code></td><td><code>minus (a, b)</code></td><td>Binary subtraction</td></tr>
<tr><td><code>+a</code></td><td><code>uplus (a)</code></td><td>Unary addition</td></tr>
<tr><td><code>-a</code></td><td><code>uminus (a)</code></td><td>Unary subtraction</td></tr>
<tr><td><code>a .* b</code></td><td><code>times (a, b)</code></td><td>Element-wise multiplication</td></tr>
<tr><td><code>a * b</code></td><td><code>mtimes (a, b)</code></td><td>Matrix multiplication</td></tr>
<tr><td><code>a ./ b</code></td><td><code>rdivide (a, b)</code></td><td>Element-wise right division</td></tr>
<tr><td><code>a / b</code></td><td><code>mrdivide (a, b)</code></td><td>Matrix right division</td></tr>
<tr><td><code>a .\ b</code></td><td><code>ldivide (a, b)</code></td><td>Element-wise left division</td></tr>
<tr><td><code>a \ b</code></td><td><code>mldivide (a, b)</code></td><td>Matrix left division</td></tr>
<tr><td><code>a .^ b</code></td><td><code>power (a, b)</code></td><td>Element-wise power</td></tr>
<tr><td><code>a ^ b</code></td><td><code>mpower (a, b)</code></td><td>Matrix power</td></tr>
<tr><td><code>a < b</code></td><td><code>lt (a, b)</code></td><td>Less than</td></tr>
<tr><td><code>a <= b</code></td><td><code>le (a, b)</code></td><td>Less than or equal to</td></tr>
<tr><td><code>a > b</code></td><td><code>gt (a, b)</code></td><td>Greater than</td></tr>
<tr><td><code>a >= b</code></td><td><code>ge (a, b)</code></td><td>Greater than or equal to</td></tr>
<tr><td><code>a == b</code></td><td><code>eq (a, b)</code></td><td>Equal to</td></tr>
<tr><td><code>a != b</code></td><td><code>ne (a, b)</code></td><td>Not equal to</td></tr>
<tr><td><code>a & b</code></td><td><code>and (a, b)</code></td><td>Logical and</td></tr>
<tr><td><code>a | b</code></td><td><code>or (a, b)</code></td><td>Logical or</td></tr>
<tr><td><code>!a</code></td><td><code>not (a)</code></td><td>Logical not</td></tr>
<tr><td><code>a'</code></td><td><code>ctranspose (a)</code></td><td>Complex conjugate transpose</td></tr>
<tr><td><code>a.'</code></td><td><code>transpose (a)</code></td><td>Transpose</td></tr>
<tr><td><code>a:b</code></td><td><code>colon (a, b)</code></td><td>Two element range</td></tr>
<tr><td><code>a:b:c</code></td><td><code>colon (a, b, c)</code></td><td>Three element range</td></tr>
<tr><td><code>[a, b]</code></td><td><code>horzcat (a, b)</code></td><td>Horizontal concatenation</td></tr>
<tr><td><code>[a; b]</code></td><td><code>vertcat (a, b)</code></td><td>Vertical concatenation</td></tr>
<tr><td><code>a(s<em>_1</em>,…,s<em>_n</em>)</code></td><td><code>subsref (a, s)</code></td><td>Subscripted reference</td></tr>
<tr><td><code>a(s<em>_1</em>,…,s<em>_n</em>) = b</code></td><td><code>subsasgn (a, s, b)</code></td><td>Subscripted assignment</td></tr>
<tr><td><code>b(a)</code></td><td><code>subsindex (a)</code></td><td>Convert object to index</td></tr>
<tr><td><code>disp</code></td><td><code>disp (a)</code></td><td>Object display</td></tr>
</table>
<div class="float-caption"><p><strong>Table 34.1: </strong>Available overloaded operators and their corresponding class method</p></div></div>
<p>An example <code>mtimes</code> method for the polynomial class might look like
</p>
<div class="example">
<pre class="verbatim">function p = mtimes (a, b)
p = polynomial (conv (double (a), double (b)));
endfunction
</pre></div>
<hr>
<div class="header">
<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>
</body>
</html>
|