Mehrfachvererbung

This commit is contained in:
Marco Ammon 2020-06-26 10:44:47 +02:00
parent b23c701932
commit 1051d60244
2 changed files with 10 additions and 4 deletions

Binary file not shown.

View File

@ -210,10 +210,16 @@
\end{itemize} \end{itemize}
\subsection{Mehrfachvererbung} \subsection{Mehrfachvererbung}
\begin{itemize}
\subsubsection{Dynamischer Methodenaufruf} \item Objekt enthält V-Table pro Elternklasse und eine V-Table für eigene Methoden:\begin{itemize}
\item Wenn Elternmethoden nicht überschrieben werden, Verhalten wie bei Interfaces mit Standardimplementierung
\subsubsection{Casts/Typprüfung zur Laufzeit} \item Sonst Hilfsmethoden in V-Tables für Anteil der jeweiligen Elternklasse eintragen
\end{itemize}
\item Diamantenproblem: Mehrere Elternklassen erben von selber Klasse \texttt{A} $\rightarrow$ Attribute von \texttt{A} mehrfach vorhanden
\item Virtual Inheritance als Lösung für Diamentenproblem (nur ein Feld für doppeltes Attribut \texttt{a}):\begin{itemize}
\item \texttt{A}-Anteil des Objekts nicht mehr an festem Offset, sondern zusätzliches Offset-Feld in jedem \enquote{Anteil} des Objekts
\end{itemize}
\end{itemize}
\section{Code-Selektion} \section{Code-Selektion}