Commit 82a503c1 authored by me's avatar me
Browse files

improved styling of lstlisting/lstinline

parent c8544743
......@@ -3,5 +3,5 @@
\item Prefix-Operator Type\& operator++(){}
\item Postfix-Operator Type operator++(int){}
\item der Int-Parameter wird benötigt um die beiden auseinander zu halten, kann allerdings nur beim expliziten .operator++() verwendet werden
\item es können nicht mehrere implizite Class-type conversion direkt aufeinander folgen
\item es können nicht mehrere implizite Class-type-conversions direkt aufeinander folgen
\end{itemize}
\section{Lecture 7}
\begin{itemize}
\item Protected Vererbung: Kein Zugriff von friends der abgeleiteten Klasse
\item Default Vererbung bei Structs ist public
\item pure-virtual-function: virtual \textless type\textgreater \textless func\textgreater() = 0; sorgt für abstrakte Klasse
\item Default Vererbung bei Structs ist public, bei Klassen hingegen ist es private (relevant dabei ist der Typ des erbenden Kindes)
\item pure-virtual-function: \il{virtual <type> <func>() = 0;} sorgt für abstrakte Klasse
\item Wenn Funktionen nicht virtual sind, dann wird der statische Klassen-Typ verwendet:\\
Base b* = new Derived d;\\
b-\textgreater func();\\
\il{Base b* = new Derived d;}\\
\il{b->func();}\\
ruft func() der Base auf, wenn diese non-virtual ist\\
virtual Funktionen sind auch in sämtlichen Unterklassen implizit virtual
\item Destructors von abstrakten Klassen sollten stets virtual sein. Dies ist nicht zwingend notwendig, wenn die Klasse pure-abstract ist, weil dann überhaupt keine Objekte erzeugt werden können.
\item class Class final{};\\
\item \il{class Class final\{\};}\\
Verhindert Vererbung von Class
\item using Base::Base;\\
\item \il{using Base::Base;}\\
sorgt dafür, dass für jeden Konstruktor der Base-Klasse ein Konstruktor in der Derived Klasse mit der selben Parameterliste angelegt wird, der die Parameter an die entsprechenden Konstruktoren der Base-Klass weiterreicht.
\item In Assignment-Copy-Operatoren der Unterklasse muss auch entsprechender Code für die Oberklasse enthalten sein
\item dynamic\_cast castet vom Base-Type zu einem Derived-Type. Erfordert anscheinend, dass die Base-Klasse abstract ist
......@@ -26,7 +26,6 @@ template<class T> struct B : A<T> {
void print (T a) { cout << "6" << endl; }
static void print (float a) { cout << "7" << endl; }
};
template<> void B<int>::print (int a) { cout << "8" << endl; }
void main() {
......
......@@ -133,7 +133,10 @@
\begin{document}
\definecolor{gray}{gray}{0.7}
\definecolor{gray}{gray}{0.85}
\definecolor{kw}{HTML}{30a060}
\definecolor{iden}{HTML}{000080}
\definecolor{comm}{HTML}{ff3060}
\lstset{
numbers=left,
numberstyle=\tiny,
......@@ -141,9 +144,12 @@
breakatwhitespace=true,
tabsize=3,
backgroundcolor=\color{gray},
keywordstyle=\color{RedViolet}\ttfamily\bfseries,
identifierstyle=\bfseries\color{blue},
commentstyle=\color{red},
%keywordstyle=\color{RedViolet}\ttfamily\bfseries,
keywordstyle=\color{kw}\ttfamily\bfseries,
%identifierstyle=\bfseries\color{blue},
identifierstyle=\bfseries\color{iden},
%commentstyle=\color{red},
commentstyle=\color{comm},
stringstyle=\bfseries\color{BurntOrange},
basicstyle=\ttfamily\color{black}\small,
emph={operator},
......@@ -172,7 +178,8 @@
{~}{{\textasciitilde}}1
}
\newcommand{\il}[1]{\lstinline[language=C++,identifierstyle=\bfseries\color{black}]$#1$}
\definecolor{grayl}{gray}{0.9}
\newcommand{\il}[1]{\colorbox{grayl}{\lstinline[language=C++,identifierstyle=\bfseries\color{iden},keywordstyle=\color{kw}\ttfamily\bfseries,commentstyle=\color{comm},stringstyle=\bfseries\color{BurntOrange}]$#1$}}
\begin{titlepage}
\vspace*{0.15\textheight}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment