Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
|
notes:interface:interface [2015/11/26 16:08] xin |
notes:interface:interface [2024/08/01 10:50] (aktuell) xin |
||
|---|---|---|---|
| Zeile 14: | Zeile 14: | ||
| 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> | ||
| + | |||