Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
| Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
|
notes:interface:interface [2015/11/24 19:55] xin angelegt |
notes:interface:interface [2024/08/01 10:50] (aktuell) xin |
||
|---|---|---|---|
| Zeile 4: | Zeile 4: | ||
| <code> | <code> | ||
| - | interface operator $ | + | operator $ is interface |
| { | { | ||
| operator $ as string; // allgemein | operator $ as string; // allgemein | ||
| }; | }; | ||
| - | interface calc | + | calc is interface |
| { | { | ||
| operator + ( lhs, rhs is this\ ) as this\; // generisch | operator + ( lhs, rhs is this\ ) as this\; // generisch | ||
| operator + ( lhs, rhs is this\ ) as this\; | operator + ( lhs, rhs is this\ ) as this\; | ||
| }; | }; | ||
| + | |||
| int = 0 with { operator $; calc }; | int = 0 with { operator $; calc }; | ||
| Zeile 22: | Zeile 23: | ||
| Hier könnte man auch mal die Einschränkungen bei IFC zu rate ziehen. Dokumentiert man beispielsweise, dass eine Methode zum Beispiel nur 2 oder 3 zurückliefern kann, so kann man das ja im Interface dokumentieren und in einer Debugversion auch zur Laufzeit prüfen lassen. | Hier könnte man auch mal die Einschränkungen bei IFC zu rate ziehen. Dokumentiert man beispielsweise, dass eine Methode zum Beispiel nur 2 oder 3 zurückliefern kann, so kann man das ja im Interface dokumentieren und in einer Debugversion auch zur Laufzeit prüfen lassen. | ||
| + | |||
| + | ====== Shadowing ====== | ||
| + | |||
| + | Eine als Interface deklarierte Funktion sollte nie geshadowed werden. | ||
| + | |||
| + | <code> | ||
| + | class Thing | ||
| + | { | ||
| + | public: | ||
| + | int Value; | ||
| + | | ||
| + | int const & getValue() const interface; // iface? ifc? | ||
| + | }; | ||
| + | |||
| + | class MutableThing : public Thing | ||
| + | { | ||
| + | public: | ||
| + | int & getValue(); // könnte auch Interface sein, aber die oben beschriebene Interface-Funktion wird nicht ausgeblendet. | ||
| + | } | ||
| + | </code> | ||
| + | |||