Object-Oriented Programming Onramp, Overloading Operators

2 visualizzazioni (ultimi 30 giorni)
Hallo Harald,
meine Frage bezieht sich auf die Erläuterungen auf dieser Seite:
Mit x und y werden zwei Instanzen der Klasse foo erzeugt. Anschließend werden beide multipliziert. Wo wird die Information in der Tabelle (Zuordnung der Operatoren zu den Funktionen) hinterlegt?
Vielen Dank!
Lisa

Risposta accettata

Vandit
Vandit il 17 Giu 2024
Hello Elisabeth,
The information about how operators are associated with functions in MATLAB is part of MATLAB's object-oriented programming design. When you define a class, you can overload built-in MATLAB functions and operators for instances of that class by implementing methods with specific names. The table provided shows some of these associations:
  • a + b is associated with the plus(a, b) method.
  • a - b is associated with the minus(a, b) method.
  • a .* b is associated with the times(a, b) method.
  • a * b is associated with the mtimes(a, b) method.
  • a < b is associated with the lt(a, b) method.
  • a == b is associated with the eq(a, b) method.
In the context of the 'foo' class you provided, when you perform the operation z = x * y, MATLAB internally calls the "mtimes" method defined in your class (since * is associated with "mtimes"). This is because the "mtimes" method is specifically designed to handle the * operator for objects of your class. The "mtimes" method you've implemented in turn calls the "times" method (via the .* operator within the "mtimes" method), which performs element-wise multiplication of the 'Values' properties of the two 'foo' objects and returns a new 'foo' object with the result.
For a comprehensive listing of all MATLAB operators, symbols, and special characters, along with their corresponding functional equivalents, please refer to the following documentation:
Hope this helps.
  1 Commento
Elisabeth
Elisabeth il 18 Giu 2024
Hello Vandit,
thank you for you answer! I understand that somewhere in a code the behaviour of operators must be defined (in that case by special functions to customize the behaviour of different operators like +,-,...). I don't know how to classify Matlab compared to C and C++. C++ supports operator overloading but Matlab is based on C, right? (What exactly is Matlab, since its based on C but not C++ but knows classes?) Can I look up the implementation of the table, you've mentioned above, somewhere?
Elisabeth

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!