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

improved styling of lstlisting/lstinline

parent c8544743
...@@ -3,5 +3,5 @@ ...@@ -3,5 +3,5 @@
\item Prefix-Operator Type\& operator++(){} \item Prefix-Operator Type\& operator++(){}
\item Postfix-Operator Type operator++(int){} \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 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} \end{itemize}
\section{Lecture 7} \section{Lecture 7}
\begin{itemize} \begin{itemize}
\item Protected Vererbung: Kein Zugriff von friends der abgeleiteten Klasse \item Protected Vererbung: Kein Zugriff von friends der abgeleiteten Klasse
\item Default Vererbung bei Structs ist public \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: virtual \textless type\textgreater \textless func\textgreater() = 0; sorgt für abstrakte Klasse \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:\\ \item Wenn Funktionen nicht virtual sind, dann wird der statische Klassen-Typ verwendet:\\
Base b* = new Derived d;\\ \il{Base b* = new Derived d;}\\
b-\textgreater func();\\ \il{b->func();}\\
ruft func() der Base auf, wenn diese non-virtual ist\\ ruft func() der Base auf, wenn diese non-virtual ist\\
virtual Funktionen sind auch in sämtlichen Unterklassen implizit virtual 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 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 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. 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 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 \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> { ...@@ -26,7 +26,6 @@ template<class T> struct B : A<T> {
void print (T a) { cout << "6" << endl; } void print (T a) { cout << "6" << endl; }
static void print (float a) { cout << "7" << endl; } static void print (float a) { cout << "7" << endl; }
}; };
template<> void B<int>::print (int a) { cout << "8" << endl; } template<> void B<int>::print (int a) { cout << "8" << endl; }
void main() { void main() {
......
...@@ -133,7 +133,10 @@ ...@@ -133,7 +133,10 @@
\begin{document} \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{ \lstset{
numbers=left, numbers=left,
numberstyle=\tiny, numberstyle=\tiny,
...@@ -141,9 +144,12 @@ ...@@ -141,9 +144,12 @@
breakatwhitespace=true, breakatwhitespace=true,
tabsize=3, tabsize=3,
backgroundcolor=\color{gray}, backgroundcolor=\color{gray},
keywordstyle=\color{RedViolet}\ttfamily\bfseries, %keywordstyle=\color{RedViolet}\ttfamily\bfseries,
identifierstyle=\bfseries\color{blue}, keywordstyle=\color{kw}\ttfamily\bfseries,
commentstyle=\color{red}, %identifierstyle=\bfseries\color{blue},
identifierstyle=\bfseries\color{iden},
%commentstyle=\color{red},
commentstyle=\color{comm},
stringstyle=\bfseries\color{BurntOrange}, stringstyle=\bfseries\color{BurntOrange},
basicstyle=\ttfamily\color{black}\small, basicstyle=\ttfamily\color{black}\small,
emph={operator}, emph={operator},
...@@ -172,7 +178,8 @@ ...@@ -172,7 +178,8 @@
{~}{{\textasciitilde}}1 {~}{{\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} \begin{titlepage}
\vspace*{0.15\textheight} \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