From 9986047f32d0e20c3aa0ed5441fe6ba4aa6ca8c2 Mon Sep 17 00:00:00 2001
From: Peter Gerwinski <peter.gerwinski@hs-bochum.de>
Date: Thu, 6 Apr 2023 16:54:38 +0200
Subject: [PATCH] Beispiele 6.4.2023

---
 20230406/                    |   1 +
 20230406/constructors-01.cpp |  19 +++
 20230406/constructors-02.cpp |  23 ++++
 20230406/constructors-03.cpp |  23 ++++
 20230406/constructors-04.cpp |  27 +++++
 20230406/constructors-05.cpp |  27 +++++
 20230406/constructors-06.cpp |  23 ++++
 20230406/constructors-07.cpp |  24 ++++
 20230406/constructors-08.cpp |  29 +++++
 20230406/constructors-09.cpp |  28 +++++
 20230406/constructors-10.cpp |  32 +++++
 20230406/constructors-11.cpp |  33 ++++++
 20230406/constructors-12.cpp |  38 ++++++
 20230406/constructors-13.cpp |  37 ++++++
 20230406/constructors-14.cpp |  27 +++++
 20230406/constructors-15.cpp |  30 +++++
 20230406/constructors-16.cpp |  30 +++++
 20230406/constructors-17.cpp |  26 +++++
 20230406/destructors-01.cpp  |  31 +++++
 20230406/destructors-02.cpp  |  33 ++++++
 20230406/destructors-03.cpp  |  39 +++++++
 20230406/destructors-03.s    | 218 +++++++++++++++++++++++++++++++++++
 20230406/destructors-04.cpp  |  39 +++++++
 20230406/destructors-05.cpp  |  40 +++++++
 20230406/objects-28.cpp      | 103 +++++++++++++++++
 20230406/objects-28a.cpp     | 109 ++++++++++++++++++
 20230406/objects-28b.cpp     | 109 ++++++++++++++++++
 20230406/objects-29.cpp      |  96 +++++++++++++++
 20230406/objects-30.cpp      |  96 +++++++++++++++
 20230406/objects-31.cpp      |  14 +++
 20230406/objects-32.cpp      |  16 +++
 20230406/objects-33.cpp      |  16 +++
 20230406/objects-34.cpp      |  18 +++
 20230406/objects-35.cpp      |  22 ++++
 20230406/objects-36.cpp      |  27 +++++
 20230406/objects-37.cpp      |  27 +++++
 20230406/objects-38.cpp      |  29 +++++
 20230406/objects-39.cpp      |  28 +++++
 20230406/objects-40.cpp      |  28 +++++
 20230406/strings-01.cpp      |   9 ++
 20230406/strings-01.s        | 117 +++++++++++++++++++
 20230406/strings-02.cpp      |  10 ++
 20230406/strings-03.cpp      |   9 ++
 20230406/strings-04.cpp      |   9 ++
 20230406/strings-05.cpp      |   9 ++
 20230406/strings-06.cpp      |   9 ++
 20230406/strings-07.cpp      |   9 ++
 20230406/strings-08.cpp      |  11 ++
 20230406/strings-09.cpp      |  11 ++
 20230406/strings-10.cpp      |  11 ++
 20230406/strings-11.cpp      |   8 ++
 20230406/strings-12.cpp      |   8 ++
 20230406/unicode-01.cpp      |   8 ++
 "20230406/\303\244"          |   1 +
 54 files changed, 1854 insertions(+)
 create mode 100755 20230406/ 
 create mode 100644 20230406/constructors-01.cpp
 create mode 100644 20230406/constructors-02.cpp
 create mode 100644 20230406/constructors-03.cpp
 create mode 100644 20230406/constructors-04.cpp
 create mode 100644 20230406/constructors-05.cpp
 create mode 100644 20230406/constructors-06.cpp
 create mode 100644 20230406/constructors-07.cpp
 create mode 100644 20230406/constructors-08.cpp
 create mode 100644 20230406/constructors-09.cpp
 create mode 100644 20230406/constructors-10.cpp
 create mode 100644 20230406/constructors-11.cpp
 create mode 100644 20230406/constructors-12.cpp
 create mode 100644 20230406/constructors-13.cpp
 create mode 100644 20230406/constructors-14.cpp
 create mode 100644 20230406/constructors-15.cpp
 create mode 100644 20230406/constructors-16.cpp
 create mode 100644 20230406/constructors-17.cpp
 create mode 100644 20230406/destructors-01.cpp
 create mode 100644 20230406/destructors-02.cpp
 create mode 100644 20230406/destructors-03.cpp
 create mode 100644 20230406/destructors-03.s
 create mode 100644 20230406/destructors-04.cpp
 create mode 100644 20230406/destructors-05.cpp
 create mode 100644 20230406/objects-28.cpp
 create mode 100644 20230406/objects-28a.cpp
 create mode 100644 20230406/objects-28b.cpp
 create mode 100644 20230406/objects-29.cpp
 create mode 100644 20230406/objects-30.cpp
 create mode 100644 20230406/objects-31.cpp
 create mode 100644 20230406/objects-32.cpp
 create mode 100644 20230406/objects-33.cpp
 create mode 100644 20230406/objects-34.cpp
 create mode 100644 20230406/objects-35.cpp
 create mode 100644 20230406/objects-36.cpp
 create mode 100644 20230406/objects-37.cpp
 create mode 100644 20230406/objects-38.cpp
 create mode 100644 20230406/objects-39.cpp
 create mode 100644 20230406/objects-40.cpp
 create mode 100644 20230406/strings-01.cpp
 create mode 100644 20230406/strings-01.s
 create mode 100644 20230406/strings-02.cpp
 create mode 100644 20230406/strings-03.cpp
 create mode 100644 20230406/strings-04.cpp
 create mode 100644 20230406/strings-05.cpp
 create mode 100644 20230406/strings-06.cpp
 create mode 100644 20230406/strings-07.cpp
 create mode 100644 20230406/strings-08.cpp
 create mode 100644 20230406/strings-09.cpp
 create mode 100644 20230406/strings-10.cpp
 create mode 100644 20230406/strings-11.cpp
 create mode 100644 20230406/strings-12.cpp
 create mode 100644 20230406/unicode-01.cpp
 create mode 100755 "20230406/\303\244"

diff --git a/20230406/  b/20230406/ 
new file mode 100755
index 0000000..e05ff7a
--- /dev/null
+++ b/20230406/ 	
@@ -0,0 +1 @@
+echo "Welt!"
diff --git a/20230406/constructors-01.cpp b/20230406/constructors-01.cpp
new file mode 100644
index 0000000..0f52f34
--- /dev/null
+++ b/20230406/constructors-01.cpp
@@ -0,0 +1,19 @@
+#include <stdio.h>
+
+class TInteger
+{
+private:
+  int content;
+public:
+  void print ()
+  {
+    printf ("%d\n", content);
+  }
+};
+
+int main ()
+{
+  TInteger i;
+  i.print ();
+  return 0;
+}
diff --git a/20230406/constructors-02.cpp b/20230406/constructors-02.cpp
new file mode 100644
index 0000000..b2d954b
--- /dev/null
+++ b/20230406/constructors-02.cpp
@@ -0,0 +1,23 @@
+#include <stdio.h>
+
+class TInteger
+{
+private:
+  int content;
+public:
+  void print ()
+  {
+    printf ("%d\n", content);
+  }
+  TInteger (int i)
+  {
+    content = i;
+  }
+};
+
+int main ()
+{
+  TInteger i;
+  i.print ();
+  return 0;
+}
diff --git a/20230406/constructors-03.cpp b/20230406/constructors-03.cpp
new file mode 100644
index 0000000..af9082c
--- /dev/null
+++ b/20230406/constructors-03.cpp
@@ -0,0 +1,23 @@
+#include <stdio.h>
+
+class TInteger
+{
+private:
+  int content;
+public:
+  void print ()
+  {
+    printf ("%d\n", content);
+  }
+  TInteger (int i)
+  {
+    content = i;
+  }
+};
+
+int main ()
+{
+  TInteger i (13);
+  i.print ();
+  return 0;
+}
diff --git a/20230406/constructors-04.cpp b/20230406/constructors-04.cpp
new file mode 100644
index 0000000..375b3a7
--- /dev/null
+++ b/20230406/constructors-04.cpp
@@ -0,0 +1,27 @@
+#include <stdio.h>
+
+class TInteger
+{
+private:
+  int content;
+public:
+  void print ()
+  {
+    printf ("%d\n", content);
+  }
+  TInteger ()
+  {
+    content = 42;
+  }
+  TInteger (int i)
+  {
+    content = i;
+  }
+};
+
+int main ()
+{
+  TInteger i;
+  i.print ();
+  return 0;
+}
diff --git a/20230406/constructors-05.cpp b/20230406/constructors-05.cpp
new file mode 100644
index 0000000..c78427c
--- /dev/null
+++ b/20230406/constructors-05.cpp
@@ -0,0 +1,27 @@
+#include <stdio.h>
+
+class TInteger
+{
+private:
+  int content;
+public:
+  void print ()
+  {
+    printf ("%d\n", content);
+  }
+  TInteger ()
+  {
+    content = 42;
+  }
+  TInteger (int i)
+  {
+    content = i;
+  }
+};
+
+int main ()
+{
+  TInteger i = 13;
+  i.print ();
+  return 0;
+}
diff --git a/20230406/constructors-06.cpp b/20230406/constructors-06.cpp
new file mode 100644
index 0000000..030d9a7
--- /dev/null
+++ b/20230406/constructors-06.cpp
@@ -0,0 +1,23 @@
+#include <stdio.h>
+
+class TInteger
+{
+private:
+  int content;
+public:
+  void print ()
+  {
+    printf ("%d\n", content);
+  }
+  TInteger ()
+  {
+    content = 42;
+  }
+};
+
+int main ()
+{
+  TInteger i = 13;
+  i.print ();
+  return 0;
+}
diff --git a/20230406/constructors-07.cpp b/20230406/constructors-07.cpp
new file mode 100644
index 0000000..0c56d21
--- /dev/null
+++ b/20230406/constructors-07.cpp
@@ -0,0 +1,24 @@
+#include <stdio.h>
+
+class TInteger
+{
+private:
+  int content;
+public:
+  void print ()
+  {
+    printf ("%d\n", content);
+  }
+  TInteger ()
+  {
+    content = 42;
+  }
+};
+
+int main ()
+{
+  TInteger i;
+  i = 13;
+  i.print ();
+  return 0;
+}
diff --git a/20230406/constructors-08.cpp b/20230406/constructors-08.cpp
new file mode 100644
index 0000000..64a8379
--- /dev/null
+++ b/20230406/constructors-08.cpp
@@ -0,0 +1,29 @@
+#include <stdio.h>
+
+class TInteger
+{
+private:
+  int content;
+public:
+  void print ()
+  {
+    printf ("%d\n", content);
+  }
+  TInteger ()
+  {
+    content = 42;
+  }
+  TInteger (int i)
+  {
+    content = i;
+  }
+};
+
+int main ()
+{
+  TInteger i;
+  TInteger j = 13;
+  i = j;
+  i.print ();
+  return 0;
+}
diff --git a/20230406/constructors-09.cpp b/20230406/constructors-09.cpp
new file mode 100644
index 0000000..5c5718e
--- /dev/null
+++ b/20230406/constructors-09.cpp
@@ -0,0 +1,28 @@
+#include <stdio.h>
+
+class TInteger
+{
+private:
+  int content;
+public:
+  void print ()
+  {
+    printf ("%d\n", content);
+  }
+  TInteger ()
+  {
+    content = 42;
+  }
+  TInteger (int i)
+  {
+    content = i;
+  }
+};
+
+int main ()
+{
+  TInteger j = 13;
+  TInteger i = j;
+  i.print ();
+  return 0;
+}
diff --git a/20230406/constructors-10.cpp b/20230406/constructors-10.cpp
new file mode 100644
index 0000000..82e5194
--- /dev/null
+++ b/20230406/constructors-10.cpp
@@ -0,0 +1,32 @@
+#include <stdio.h>
+
+class TInteger
+{
+private:
+  int content;
+public:
+  void print ()
+  {
+    printf ("%d\n", content);
+  }
+  TInteger ()
+  {
+    content = 42;
+  }
+  TInteger (int i)
+  {
+    content = i;
+  }
+  TInteger (const TInteger &src)
+  {
+    content = 2 * src.content;
+  }
+};
+
+int main ()
+{
+  TInteger j = 13;
+  TInteger i = j;
+  i.print ();
+  return 0;
+}
diff --git a/20230406/constructors-11.cpp b/20230406/constructors-11.cpp
new file mode 100644
index 0000000..b72bef9
--- /dev/null
+++ b/20230406/constructors-11.cpp
@@ -0,0 +1,33 @@
+#include <stdio.h>
+
+class TInteger
+{
+private:
+  int content;
+public:
+  void print ()
+  {
+    printf ("%d\n", content);
+  }
+  TInteger ()
+  {
+    content = 42;
+  }
+  TInteger (int i)
+  {
+    content = i;
+  }
+  TInteger (const TInteger &src)
+  {
+    content = 2 * src.content;
+  }
+};
+
+int main ()
+{
+  TInteger j = 13;
+  TInteger i;
+  i = j;
+  i.print ();
+  return 0;
+}
diff --git a/20230406/constructors-12.cpp b/20230406/constructors-12.cpp
new file mode 100644
index 0000000..0c60901
--- /dev/null
+++ b/20230406/constructors-12.cpp
@@ -0,0 +1,38 @@
+#include <stdio.h>
+
+class TInteger
+{
+private:
+  int content;
+public:
+  void print ()
+  {
+    printf ("%d\n", content);
+  }
+  TInteger ()
+  {
+    content = 42;
+  }
+  TInteger (int i)
+  {
+    content = i;
+  }
+  TInteger (const TInteger &src)
+  {
+    content = 2 * src.content;
+  }
+  TInteger &operator = (const TInteger &src)
+  {
+    content = src.content / 2;
+    return *this;
+  }
+};
+
+int main ()
+{
+  TInteger j = 13;
+  TInteger i;
+  i = j;
+  i.print ();
+  return 0;
+}
diff --git a/20230406/constructors-13.cpp b/20230406/constructors-13.cpp
new file mode 100644
index 0000000..49b94fe
--- /dev/null
+++ b/20230406/constructors-13.cpp
@@ -0,0 +1,37 @@
+#include <stdio.h>
+
+class TInteger
+{
+private:
+  int content;
+public:
+  void print ()
+  {
+    printf ("%d\n", content);
+  }
+  TInteger ()
+  {
+    content = 42;
+  }
+  TInteger (int i)
+  {
+    content = i;
+  }
+  TInteger (const TInteger &src)
+  {
+    content = 2 * src.content;
+  }
+  TInteger &operator = (const TInteger &src)
+  {
+    content = src.content / 2;
+    return *this;
+  }
+};
+
+int main ()
+{
+  TInteger j = 13;
+  TInteger i = j;
+  i.print ();
+  return 0;
+}
diff --git a/20230406/constructors-14.cpp b/20230406/constructors-14.cpp
new file mode 100644
index 0000000..06329a0
--- /dev/null
+++ b/20230406/constructors-14.cpp
@@ -0,0 +1,27 @@
+#include <stdio.h>
+
+class TString
+{
+private:
+  const char *content;
+public:
+  void print ()
+  {
+    printf ("%s\n", content);
+  }
+  TString ()
+  {
+    content = "Hello, world!\n";
+  }
+  TString (const char *s)
+  {
+    content = s;
+  }
+};
+
+int main ()
+{
+  TString s = "Hallo, Welt!";
+  s.print ();
+  return 0;
+}
diff --git a/20230406/constructors-15.cpp b/20230406/constructors-15.cpp
new file mode 100644
index 0000000..6ff60bb
--- /dev/null
+++ b/20230406/constructors-15.cpp
@@ -0,0 +1,30 @@
+#include <stdio.h>
+
+class TIntString
+{
+private:
+  int icontent;
+  const char *content;
+public:
+  void print ()
+  {
+    printf ("%s %i\n", content, icontent);
+  }
+  TIntString ()
+  {
+    content = "Hello, world!\n";
+    icontent = 42;
+  }
+  TIntString (const char *s, int i)
+  {
+    content = s;
+    icontent = i;
+  }
+};
+
+int main ()
+{
+  TIntString s = { "Hallo, Welt!", 42 };
+  s.print ();
+  return 0;
+}
diff --git a/20230406/constructors-16.cpp b/20230406/constructors-16.cpp
new file mode 100644
index 0000000..b33a239
--- /dev/null
+++ b/20230406/constructors-16.cpp
@@ -0,0 +1,30 @@
+#include <stdio.h>
+
+class TIntString
+{
+private:
+  int icontent;
+  const char *content;
+public:
+  void print ()
+  {
+    printf ("%s %i\n", content, icontent);
+  }
+  TIntString ()
+  {
+    content = "Hello, world!\n";
+    icontent = 42;
+  }
+  TIntString (const char *s, int i)
+  {
+    content = s;
+    icontent = i;
+  }
+};
+
+int main ()
+{
+  TIntString s ("Hallo, Welt!", 42);
+  s.print ();
+  return 0;
+}
diff --git a/20230406/constructors-17.cpp b/20230406/constructors-17.cpp
new file mode 100644
index 0000000..c41b054
--- /dev/null
+++ b/20230406/constructors-17.cpp
@@ -0,0 +1,26 @@
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+class TString
+{
+private:
+  char *content;
+public:
+  void print ()
+  {
+    printf ("%s\n", content);
+  }
+  TString (const char *s = "Hello, world!")
+  {
+    content = (char *) malloc (strlen (s));
+    strcpy (content, s);
+  }
+};
+
+int main ()
+{
+  TString s = "Hallo, Welt!";
+  s.print ();
+  return 0;
+}
diff --git a/20230406/destructors-01.cpp b/20230406/destructors-01.cpp
new file mode 100644
index 0000000..de9bc07
--- /dev/null
+++ b/20230406/destructors-01.cpp
@@ -0,0 +1,31 @@
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+class TString
+{
+private:
+  char *content;
+public:
+  void print ()
+  {
+    printf ("%s\n", content);
+  }
+  TString (const char *s = "Hello, world!")
+  {
+    content = (char *) malloc (strlen (s));
+    strcpy (content, s);
+  }
+  virtual ~TString ()
+  {
+    free (content);
+    content = NULL;
+  }
+};
+
+int main ()
+{
+  TString s = "Hallo, Welt!";
+  s.print ();
+  return 0;
+}
diff --git a/20230406/destructors-02.cpp b/20230406/destructors-02.cpp
new file mode 100644
index 0000000..ee8e144
--- /dev/null
+++ b/20230406/destructors-02.cpp
@@ -0,0 +1,33 @@
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+class TString
+{
+private:
+  char *content;
+public:
+  void print ()
+  {
+    printf ("%s\n", content);
+  }
+  TString (const char *s = "Hello, world!")
+  {
+    printf ("Constructing TString object\n");
+    content = (char *) malloc (strlen (s));
+    strcpy (content, s);
+  }
+  virtual ~TString ()
+  {
+    printf ("Destructing TString object\n");
+    free (content);
+    content = NULL;
+  }
+};
+
+int main ()
+{
+  TString s = "Hallo, Welt!";
+  s.print ();
+  return 0;
+}
diff --git a/20230406/destructors-03.cpp b/20230406/destructors-03.cpp
new file mode 100644
index 0000000..2f43e95
--- /dev/null
+++ b/20230406/destructors-03.cpp
@@ -0,0 +1,39 @@
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+class TString
+{
+private:
+  char *content;
+public:
+  void print ()
+  {
+    printf ("%s\n", content);
+  }
+  TString (const char *s = "Hello, world!")
+  {
+    printf ("Constructing TString object\n");
+    content = (char *) malloc (strlen (s));
+    strcpy (content, s);
+  }
+  virtual ~TString ()
+  {
+    printf ("Destructing TString object\n");
+    free (content);
+    content = NULL;
+  }
+};
+
+int bye ()
+{
+  printf ("Bye!\n");
+  return 0;
+}
+
+int main ()
+{
+  TString s = "Hallo, Welt!";
+  s.print ();
+  return bye ();
+}
diff --git a/20230406/destructors-03.s b/20230406/destructors-03.s
new file mode 100644
index 0000000..3878f2e
--- /dev/null
+++ b/20230406/destructors-03.s
@@ -0,0 +1,218 @@
+	.file	"destructors-03.cpp"
+	.text
+	.section	.rodata._ZN7TStringD2Ev.str1.1,"aMS",@progbits,1
+.LC0:
+	.string	"Destructing TString object"
+	.section	.text._ZN7TStringD2Ev,"axG",@progbits,_ZN7TStringD5Ev,comdat
+	.align 2
+	.weak	_ZN7TStringD2Ev
+	.type	_ZN7TStringD2Ev, @function
+_ZN7TStringD2Ev:
+.LFB51:
+	.cfi_startproc
+	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
+	.cfi_lsda 0x1b,.LLSDA51
+	pushq	%rbx
+	.cfi_def_cfa_offset 16
+	.cfi_offset 3, -16
+	movq	%rdi, %rbx
+	leaq	16+_ZTV7TString(%rip), %rax
+	movq	%rax, (%rdi)
+	leaq	.LC0(%rip), %rdi
+	call	puts@PLT
+	movq	8(%rbx), %rdi
+	call	free@PLT
+	popq	%rbx
+	.cfi_def_cfa_offset 8
+	ret
+	.cfi_endproc
+.LFE51:
+	.globl	__gxx_personality_v0
+	.section	.gcc_except_table._ZN7TStringD2Ev,"aG",@progbits,_ZN7TStringD5Ev,comdat
+.LLSDA51:
+	.byte	0xff
+	.byte	0xff
+	.byte	0x1
+	.uleb128 .LLSDACSE51-.LLSDACSB51
+.LLSDACSB51:
+.LLSDACSE51:
+	.section	.text._ZN7TStringD2Ev,"axG",@progbits,_ZN7TStringD5Ev,comdat
+	.size	_ZN7TStringD2Ev, .-_ZN7TStringD2Ev
+	.weak	_ZN7TStringD1Ev
+	.set	_ZN7TStringD1Ev,_ZN7TStringD2Ev
+	.section	.text._ZN7TStringD0Ev,"axG",@progbits,_ZN7TStringD5Ev,comdat
+	.align 2
+	.weak	_ZN7TStringD0Ev
+	.type	_ZN7TStringD0Ev, @function
+_ZN7TStringD0Ev:
+.LFB53:
+	.cfi_startproc
+	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
+	.cfi_lsda 0x1b,.LLSDA53
+	pushq	%rbx
+	.cfi_def_cfa_offset 16
+	.cfi_offset 3, -16
+	movq	%rdi, %rbx
+	leaq	16+_ZTV7TString(%rip), %rax
+	movq	%rax, (%rdi)
+	leaq	.LC0(%rip), %rdi
+	call	puts@PLT
+	movq	8(%rbx), %rdi
+	call	free@PLT
+	movl	$16, %esi
+	movq	%rbx, %rdi
+	call	_ZdlPvm@PLT
+	popq	%rbx
+	.cfi_def_cfa_offset 8
+	ret
+	.cfi_endproc
+.LFE53:
+	.section	.gcc_except_table._ZN7TStringD0Ev,"aG",@progbits,_ZN7TStringD5Ev,comdat
+.LLSDA53:
+	.byte	0xff
+	.byte	0xff
+	.byte	0x1
+	.uleb128 .LLSDACSE53-.LLSDACSB53
+.LLSDACSB53:
+.LLSDACSE53:
+	.section	.text._ZN7TStringD0Ev,"axG",@progbits,_ZN7TStringD5Ev,comdat
+	.size	_ZN7TStringD0Ev, .-_ZN7TStringD0Ev
+	.section	.rodata.str1.1,"aMS",@progbits,1
+.LC1:
+	.string	"Bye!"
+	.text
+	.globl	_Z3byev
+	.type	_Z3byev, @function
+_Z3byev:
+.LFB54:
+	.cfi_startproc
+	subq	$8, %rsp
+	.cfi_def_cfa_offset 16
+	leaq	.LC1(%rip), %rdi
+	call	puts@PLT
+	movl	$0, %eax
+	addq	$8, %rsp
+	.cfi_def_cfa_offset 8
+	ret
+	.cfi_endproc
+.LFE54:
+	.size	_Z3byev, .-_Z3byev
+	.section	.rodata.str1.1
+.LC2:
+	.string	"Constructing TString object"
+	.text
+	.globl	main
+	.type	main, @function
+main:
+.LFB55:
+	.cfi_startproc
+	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
+	.cfi_lsda 0x1b,.LLSDA55
+	pushq	%rbp
+	.cfi_def_cfa_offset 16
+	.cfi_offset 6, -16
+	pushq	%rbx
+	.cfi_def_cfa_offset 24
+	.cfi_offset 3, -24
+	subq	$8, %rsp
+	.cfi_def_cfa_offset 32
+	leaq	.LC2(%rip), %rdi
+.LEHB0:
+	call	puts@PLT
+.LEHE0:
+	movl	$12, %edi
+	call	malloc@PLT
+	movq	%rax, %rbx
+	movabsq	$6278066737626505544, %rax
+	movq	%rax, (%rbx)
+	movl	$561278053, 8(%rbx)
+	movb	$0, 12(%rbx)
+	movq	%rbx, %rdi
+.LEHB1:
+	call	puts@PLT
+	leaq	.LC1(%rip), %rdi
+	call	puts@PLT
+.LEHE1:
+	jmp	.L13
+.L9:
+	movq	%rax, %rbp
+	leaq	.LC0(%rip), %rdi
+	call	puts@PLT
+	movq	%rbx, %rdi
+	call	free@PLT
+	movq	%rbp, %rdi
+.LEHB2:
+	call	_Unwind_Resume@PLT
+.LEHE2:
+.L13:
+	leaq	.LC0(%rip), %rdi
+	call	puts@PLT
+	movq	%rbx, %rdi
+	call	free@PLT
+	movl	$0, %eax
+	addq	$8, %rsp
+	.cfi_def_cfa_offset 24
+	popq	%rbx
+	.cfi_def_cfa_offset 16
+	popq	%rbp
+	.cfi_def_cfa_offset 8
+	ret
+	.cfi_endproc
+.LFE55:
+	.section	.gcc_except_table,"a",@progbits
+.LLSDA55:
+	.byte	0xff
+	.byte	0xff
+	.byte	0x1
+	.uleb128 .LLSDACSE55-.LLSDACSB55
+.LLSDACSB55:
+	.uleb128 .LEHB0-.LFB55
+	.uleb128 .LEHE0-.LEHB0
+	.uleb128 0
+	.uleb128 0
+	.uleb128 .LEHB1-.LFB55
+	.uleb128 .LEHE1-.LEHB1
+	.uleb128 .L9-.LFB55
+	.uleb128 0
+	.uleb128 .LEHB2-.LFB55
+	.uleb128 .LEHE2-.LEHB2
+	.uleb128 0
+	.uleb128 0
+.LLSDACSE55:
+	.text
+	.size	main, .-main
+	.weak	_ZTS7TString
+	.section	.rodata._ZTS7TString,"aG",@progbits,_ZTS7TString,comdat
+	.align 8
+	.type	_ZTS7TString, @object
+	.size	_ZTS7TString, 9
+_ZTS7TString:
+	.string	"7TString"
+	.weak	_ZTI7TString
+	.section	.data.rel.ro._ZTI7TString,"awG",@progbits,_ZTI7TString,comdat
+	.align 8
+	.type	_ZTI7TString, @object
+	.size	_ZTI7TString, 16
+_ZTI7TString:
+	.quad	_ZTVN10__cxxabiv117__class_type_infoE+16
+	.quad	_ZTS7TString
+	.weak	_ZTV7TString
+	.section	.data.rel.ro.local._ZTV7TString,"awG",@progbits,_ZTV7TString,comdat
+	.align 8
+	.type	_ZTV7TString, @object
+	.size	_ZTV7TString, 32
+_ZTV7TString:
+	.quad	0
+	.quad	_ZTI7TString
+	.quad	_ZN7TStringD1Ev
+	.quad	_ZN7TStringD0Ev
+	.hidden	DW.ref.__gxx_personality_v0
+	.weak	DW.ref.__gxx_personality_v0
+	.section	.data.rel.local.DW.ref.__gxx_personality_v0,"awG",@progbits,DW.ref.__gxx_personality_v0,comdat
+	.align 8
+	.type	DW.ref.__gxx_personality_v0, @object
+	.size	DW.ref.__gxx_personality_v0, 8
+DW.ref.__gxx_personality_v0:
+	.quad	__gxx_personality_v0
+	.ident	"GCC: (Debian 8.3.0-6) 8.3.0"
+	.section	.note.GNU-stack,"",@progbits
diff --git a/20230406/destructors-04.cpp b/20230406/destructors-04.cpp
new file mode 100644
index 0000000..837d2e6
--- /dev/null
+++ b/20230406/destructors-04.cpp
@@ -0,0 +1,39 @@
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+class TString
+{
+private:
+  char *content;
+public:
+  void print ()
+  {
+    printf ("%s\n", content);
+  }
+  TString (const char *s = "Hello, world!")
+  {
+    printf ("Constructing TString object\n");
+    content = (char *) malloc (strlen (s));
+    strcpy (content, s);
+  }
+  virtual ~TString ()
+  {
+    printf ("Destructing TString object\n");
+    free (content);
+    content = NULL;
+  }
+};
+
+int bye ()
+{
+  printf ("Bye!\n");
+  return 0;
+}
+
+int main ()
+{
+  TString *s = new TString ("Hallo, Welt!");
+  s->print ();
+  return bye ();
+}
diff --git a/20230406/destructors-05.cpp b/20230406/destructors-05.cpp
new file mode 100644
index 0000000..324caeb
--- /dev/null
+++ b/20230406/destructors-05.cpp
@@ -0,0 +1,40 @@
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+class TString
+{
+private:
+  char *content;
+public:
+  void print ()
+  {
+    printf ("%s\n", content);
+  }
+  TString (const char *s = "Hello, world!")
+  {
+    printf ("Constructing TString object\n");
+    content = (char *) malloc (strlen (s));
+    strcpy (content, s);
+  }
+  virtual ~TString ()
+  {
+    printf ("Destructing TString object\n");
+    free (content);
+    content = NULL;
+  }
+};
+
+int bye ()
+{
+  printf ("Bye!\n");
+  return 0;
+}
+
+int main ()
+{
+  TString *s = new TString ("Hallo, Welt!");
+  s->print ();
+  delete s;
+  return bye ();
+}
diff --git a/20230406/objects-28.cpp b/20230406/objects-28.cpp
new file mode 100644
index 0000000..cecd4dd
--- /dev/null
+++ b/20230406/objects-28.cpp
@@ -0,0 +1,103 @@
+#include <stdio.h>
+
+class TBase
+{
+public:
+  virtual void print ();
+  void pront ();
+};
+
+class TInteger: public TBase
+{
+private:
+  int content;
+public:
+  virtual void print ();
+  void pront ();
+  void set (int i);
+  TInteger (int i);
+  friend int main ();
+};
+
+class TString: public TBase
+{
+private:
+  const char *content;
+public:
+  virtual void print ();
+  void pront ();
+  void set (const char *s);
+  TString (const char *s);
+  friend int main ();
+};
+
+void TBase::pront ()
+{
+  printf ("Base\n");
+}
+
+void TBase::print ()
+{
+  printf ("Base\n");
+}
+
+void TInteger::print ()
+{
+  printf ("Integer: %d\n", content);
+}
+
+void TInteger::pront ()
+{
+  printf ("Integer\n");
+}
+
+void TInteger::set (int i)
+{
+  content = i;
+}
+
+TInteger::TInteger (int i)
+{
+  content = i;
+}
+
+void TString::print ()
+{
+  printf ("String: \"%s\"\n", content);
+}
+
+void TString::pront ()
+{
+  printf ("IString\n");
+}
+
+void TString::set (const char *s)
+{
+  content = s;
+}
+
+TString::TString (const char *s)
+{
+  content = s;
+}
+
+int main (void)
+{
+  TBase *object[] = { new TInteger (42),
+                      new TString ("Hello, world!"),
+                      NULL };
+
+  dynamic_cast <TInteger *> (object[0])->content = 137;
+  dynamic_cast <TString *> (object[1])->content = "Hallo, Welt!";
+
+  for (int i = 0; object[i]; i++)
+    {
+      object[i]->print ();
+      object[i]->pront ();
+    }
+
+  for (int i = 0; object[i]; i++)
+    delete object[i];
+
+  return 0;
+}
diff --git a/20230406/objects-28a.cpp b/20230406/objects-28a.cpp
new file mode 100644
index 0000000..c556ac4
--- /dev/null
+++ b/20230406/objects-28a.cpp
@@ -0,0 +1,109 @@
+#include <stdio.h>
+
+class TBase
+{
+public:
+  virtual void print ();
+  void pront ();
+  ~TBase ();
+};
+
+TBase::~TBase ()
+{
+  /* empty */
+}
+
+class TInteger: public TBase
+{
+private:
+  int content;
+public:
+  virtual void print ();
+  void pront ();
+  void set (int i);
+  TInteger (int i);
+  friend int main ();
+};
+
+class TString: public TBase
+{
+private:
+  const char *content;
+public:
+  virtual void print ();
+  void pront ();
+  void set (const char *s);
+  TString (const char *s);
+  friend int main ();
+};
+
+void TBase::pront ()
+{
+  printf ("Base\n");
+}
+
+void TBase::print ()
+{
+  printf ("Base\n");
+}
+
+void TInteger::print ()
+{
+  printf ("Integer: %d\n", content);
+}
+
+void TInteger::pront ()
+{
+  printf ("Integer\n");
+}
+
+void TInteger::set (int i)
+{
+  content = i;
+}
+
+TInteger::TInteger (int i)
+{
+  content = i;
+}
+
+void TString::print ()
+{
+  printf ("String: \"%s\"\n", content);
+}
+
+void TString::pront ()
+{
+  printf ("IString\n");
+}
+
+void TString::set (const char *s)
+{
+  content = s;
+}
+
+TString::TString (const char *s)
+{
+  content = s;
+}
+
+int main (void)
+{
+  TBase *object[] = { new TInteger (42),
+                      new TString ("Hello, world!"),
+                      NULL };
+
+  dynamic_cast <TInteger *> (object[0])->content = 137;
+  dynamic_cast <TString *> (object[1])->content = "Hallo, Welt!";
+
+  for (int i = 0; object[i]; i++)
+    {
+      object[i]->print ();
+      object[i]->pront ();
+    }
+
+  for (int i = 0; object[i]; i++)
+    delete object[i];
+
+  return 0;
+}
diff --git a/20230406/objects-28b.cpp b/20230406/objects-28b.cpp
new file mode 100644
index 0000000..86cb903
--- /dev/null
+++ b/20230406/objects-28b.cpp
@@ -0,0 +1,109 @@
+#include <stdio.h>
+
+class TBase
+{
+public:
+  virtual void print ();
+  void pront ();
+  virtual ~TBase ();
+};
+
+TBase::~TBase ()
+{
+  /* empty */
+}
+
+class TInteger: public TBase
+{
+private:
+  int content;
+public:
+  virtual void print ();
+  void pront ();
+  void set (int i);
+  TInteger (int i);
+  friend int main ();
+};
+
+class TString: public TBase
+{
+private:
+  const char *content;
+public:
+  virtual void print ();
+  void pront ();
+  void set (const char *s);
+  TString (const char *s);
+  friend int main ();
+};
+
+void TBase::pront ()
+{
+  printf ("Base\n");
+}
+
+void TBase::print ()
+{
+  printf ("Base\n");
+}
+
+void TInteger::print ()
+{
+  printf ("Integer: %d\n", content);
+}
+
+void TInteger::pront ()
+{
+  printf ("Integer\n");
+}
+
+void TInteger::set (int i)
+{
+  content = i;
+}
+
+TInteger::TInteger (int i)
+{
+  content = i;
+}
+
+void TString::print ()
+{
+  printf ("String: \"%s\"\n", content);
+}
+
+void TString::pront ()
+{
+  printf ("IString\n");
+}
+
+void TString::set (const char *s)
+{
+  content = s;
+}
+
+TString::TString (const char *s)
+{
+  content = s;
+}
+
+int main (void)
+{
+  TBase *object[] = { new TInteger (42),
+                      new TString ("Hello, world!"),
+                      NULL };
+
+  dynamic_cast <TInteger *> (object[0])->content = 137;
+  dynamic_cast <TString *> (object[1])->content = "Hallo, Welt!";
+
+  for (int i = 0; object[i]; i++)
+    {
+      object[i]->print ();
+      object[i]->pront ();
+    }
+
+  for (int i = 0; object[i]; i++)
+    delete object[i];
+
+  return 0;
+}
diff --git a/20230406/objects-29.cpp b/20230406/objects-29.cpp
new file mode 100644
index 0000000..1eb555e
--- /dev/null
+++ b/20230406/objects-29.cpp
@@ -0,0 +1,96 @@
+#include <stdio.h>
+
+class TBase
+{
+public:
+
+  void print ()
+  {
+    printf ("Base\n");
+  }
+
+  virtual void pront ()
+  {
+    printf ("Base\n");
+  }
+
+};
+
+class TInteger: public TBase
+{
+private:
+  int content;
+public:
+  friend int main ();
+
+  void print ()
+  {
+    printf ("Integer: %d\n", content);
+  }
+
+  void pront ()
+  {
+    printf ("Integer\n");
+  }
+
+  void set (int i)
+  {
+    content = i;
+  }
+
+  TInteger (int i)
+  {
+    content = i;
+  }
+
+};
+
+class TString: public TBase
+{
+private:
+  const char *content;
+public:
+  friend int main ();
+
+  void print ()
+  {
+    printf ("String: \"%s\"\n", content);
+  }
+
+  void pront ()
+  {
+    printf ("String\n");
+  }
+
+  void set (const char *s)
+  {
+    content = s;
+  }
+
+  TString (const char *s)
+  {
+    content = s;
+  }
+
+};
+
+int main (void)
+{
+  TBase *object[] = { new TInteger (42),
+                      new TString ("Hello, world!"),
+                      NULL };
+
+  dynamic_cast <TInteger *> (object[0])->content = 137;
+  dynamic_cast <TString *> (object[1])->content = "Hallo, Welt!";
+
+  for (int i = 0; object[i]; i++)
+    {
+      object[i]->print ();
+      object[i]->pront ();
+    }
+
+  for (int i = 0; object[i]; i++)
+    delete object[i];
+
+  return 0;
+}
diff --git a/20230406/objects-30.cpp b/20230406/objects-30.cpp
new file mode 100644
index 0000000..a0c7542
--- /dev/null
+++ b/20230406/objects-30.cpp
@@ -0,0 +1,96 @@
+#include <stdio.h>
+
+class TBase
+{
+public:
+
+  virtual void print ()
+  {
+    printf ("Base\n");
+  }
+
+  void pront ()
+  {
+    printf ("Base\n");
+  }
+
+};
+
+class TInteger: public TBase
+{
+private:
+  int content;
+public:
+  friend int main ();
+
+  virtual void print ()
+  {
+    printf ("Integer: %d\n", content);
+  }
+
+  void pront ()
+  {
+    printf ("Integer\n");
+  }
+
+  void set (int i)
+  {
+    content = i;
+  }
+
+  TInteger (int i)
+  {
+    content = i;
+  }
+
+};
+
+class TString: public TBase
+{
+private:
+  const char *content;
+public:
+  friend int main ();
+
+  virtual void print ()
+  {
+    printf ("String: \"%s\"\n", content);
+  }
+
+  void pront ()
+  {
+    printf ("String\n");
+  }
+
+  void set (const char *s)
+  {
+    content = s;
+  }
+
+  TString (const char *s)
+  {
+    content = s;
+  }
+
+};
+
+int main (void)
+{
+  TBase *object[] = { new TInteger (42),
+                      new TString ("Hello, world!"),
+                      NULL };
+
+  dynamic_cast <TInteger *> (object[0])->content = 137;
+  dynamic_cast <TString *> (object[1])->content = "Hallo, Welt!";
+
+  for (int i = 0; object[i]; i++)
+    {
+      object[i]->print ();
+      object[i]->pront ();
+    }
+
+  for (int i = 0; object[i]; i++)
+    delete object[i];
+
+  return 0;
+}
diff --git a/20230406/objects-31.cpp b/20230406/objects-31.cpp
new file mode 100644
index 0000000..c30eaf3
--- /dev/null
+++ b/20230406/objects-31.cpp
@@ -0,0 +1,14 @@
+#include <stdio.h>
+
+class TFoo
+{
+public:
+  static int content;
+};
+
+int main ()
+{
+  TFoo::content = 42;
+  printf ("Answer: %d\n", TFoo::content);
+  return 0;
+}
diff --git a/20230406/objects-32.cpp b/20230406/objects-32.cpp
new file mode 100644
index 0000000..51798d9
--- /dev/null
+++ b/20230406/objects-32.cpp
@@ -0,0 +1,16 @@
+#include <stdio.h>
+
+class TFoo
+{
+public:
+  static int content;
+};
+
+int TFoo::content;
+
+int main ()
+{
+  TFoo::content = 42;
+  printf ("Answer: %d\n", TFoo::content);
+  return 0;
+}
diff --git a/20230406/objects-33.cpp b/20230406/objects-33.cpp
new file mode 100644
index 0000000..15f4157
--- /dev/null
+++ b/20230406/objects-33.cpp
@@ -0,0 +1,16 @@
+#include <stdio.h>
+
+class TFoo
+{
+public:
+  static int content;
+};
+
+int TFoo::content = 42;
+
+int main ()
+{
+  TFoo bla;
+  printf ("Answer: %d\n", bla.content);
+  return 0;
+}
diff --git a/20230406/objects-34.cpp b/20230406/objects-34.cpp
new file mode 100644
index 0000000..d3447cf
--- /dev/null
+++ b/20230406/objects-34.cpp
@@ -0,0 +1,18 @@
+#include <stdio.h>
+
+class TFoo
+{
+public:
+  static int content;
+};
+
+int TFoo::content = 42;
+
+int main ()
+{
+  TFoo bla;
+  TFoo blubb;
+  bla.content = 137;
+  printf ("Answer: %d\n", blubb.content);
+  return 0;
+}
diff --git a/20230406/objects-35.cpp b/20230406/objects-35.cpp
new file mode 100644
index 0000000..9bda597
--- /dev/null
+++ b/20230406/objects-35.cpp
@@ -0,0 +1,22 @@
+#include <stdio.h>
+
+class TFoo
+{
+public:
+  static int content;
+
+  static void hello ()
+  {
+    printf ("Hello, world!\n");
+  }
+
+};
+
+int TFoo::content = 42;
+
+int main ()
+{
+  TFoo bla;
+  bla.hello ();
+  return 0;
+}
diff --git a/20230406/objects-36.cpp b/20230406/objects-36.cpp
new file mode 100644
index 0000000..1fd93a6
--- /dev/null
+++ b/20230406/objects-36.cpp
@@ -0,0 +1,27 @@
+#include <stdio.h>
+
+class TFoo
+{
+private:
+  int content;
+
+public:
+
+  TFoo (int i)
+  {
+    content = i;
+  }
+
+  void hello ()
+  {
+    printf ("The answer is: %d\n", content);
+  }
+
+};
+
+int main ()
+{
+  TFoo bla (42);
+  bla.hello ();
+  return 0;
+}
diff --git a/20230406/objects-37.cpp b/20230406/objects-37.cpp
new file mode 100644
index 0000000..fe9e403
--- /dev/null
+++ b/20230406/objects-37.cpp
@@ -0,0 +1,27 @@
+#include <stdio.h>
+
+class TFoo
+{
+private:
+  int content;
+
+public:
+
+  TFoo (int i)
+  {
+    content = i;
+  }
+
+  static void hello ()
+  {
+    printf ("The answer is: %d\n", content);
+  }
+
+};
+
+int main ()
+{
+  TFoo bla (42);
+  bla.hello ();
+  return 0;
+}
diff --git a/20230406/objects-38.cpp b/20230406/objects-38.cpp
new file mode 100644
index 0000000..c25df64
--- /dev/null
+++ b/20230406/objects-38.cpp
@@ -0,0 +1,29 @@
+#include <stdio.h>
+
+class TFoo
+{
+private:
+  static int content;
+
+public:
+
+  TFoo (int i)
+  {
+    content = i;
+  }
+
+  static void hello ()
+  {
+    printf ("The answer is: %d\n", content);
+  }
+
+};
+
+int TFoo::content;
+
+int main ()
+{
+  TFoo bla (42);
+  bla.hello ();
+  return 0;
+}
diff --git a/20230406/objects-39.cpp b/20230406/objects-39.cpp
new file mode 100644
index 0000000..abc1adc
--- /dev/null
+++ b/20230406/objects-39.cpp
@@ -0,0 +1,28 @@
+#include <stdio.h>
+
+class TFoo
+{
+private:
+  static int content;
+
+public:
+
+  TFoo (int i)
+  {
+    content = i;
+  }
+
+  static void hello ()
+  {
+    printf ("The answer is: %d\n", content);
+  }
+
+};
+
+int TFoo::content;
+
+int main ()
+{
+  TFoo::hello ();
+  return 0;
+}
diff --git a/20230406/objects-40.cpp b/20230406/objects-40.cpp
new file mode 100644
index 0000000..f8af3e5
--- /dev/null
+++ b/20230406/objects-40.cpp
@@ -0,0 +1,28 @@
+#include <stdio.h>
+
+class TFoo
+{
+public:
+  static int content;
+  static const int answer = 42;
+
+  TFoo (int i)
+  {
+    content = i;
+  }
+
+  static void hello ()
+  {
+    printf ("The answer is: %d\n", content);
+  }
+
+};
+
+int TFoo::content;
+
+int main ()
+{
+  TFoo::content = TFoo::answer;
+  TFoo::hello ();
+  return 0;
+}
diff --git a/20230406/strings-01.cpp b/20230406/strings-01.cpp
new file mode 100644
index 0000000..d0624e4
--- /dev/null
+++ b/20230406/strings-01.cpp
@@ -0,0 +1,9 @@
+#include <iostream>
+#include <string>
+
+int main ()
+{
+  std::string hello = "Hello, world!";
+  std::cout << hello << std::endl;
+  return 0;
+}
diff --git a/20230406/strings-01.s b/20230406/strings-01.s
new file mode 100644
index 0000000..fa84b9f
--- /dev/null
+++ b/20230406/strings-01.s
@@ -0,0 +1,117 @@
+	.file	"strings-01.c"
+	.text
+	.section	.rodata.str1.1,"aMS",@progbits,1
+.LC0:
+	.string	"Hello, world!"
+	.text
+	.globl	main
+	.type	main, @function
+main:
+.LFB1540:
+	.cfi_startproc
+	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
+	.cfi_lsda 0x1b,.LLSDA1540
+	pushq	%rbx
+	.cfi_def_cfa_offset 16
+	.cfi_offset 3, -16
+	subq	$48, %rsp
+	.cfi_def_cfa_offset 64
+	leaq	47(%rsp), %rdx
+	movq	%rsp, %rdi
+	leaq	.LC0(%rip), %rsi
+.LEHB0:
+	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcRKS3_@PLT
+.LEHE0:
+	movq	8(%rsp), %rdx
+	movq	(%rsp), %rsi
+	leaq	_ZSt4cout(%rip), %rdi
+.LEHB1:
+	call	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l@PLT
+	movq	%rax, %rdi
+	call	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@PLT
+.LEHE1:
+	movq	(%rsp), %rdi
+	leaq	16(%rsp), %rax
+	cmpq	%rax, %rdi
+	je	.L6
+	call	_ZdlPv@PLT
+.L6:
+	movl	$0, %eax
+	addq	$48, %rsp
+	.cfi_remember_state
+	.cfi_def_cfa_offset 16
+	popq	%rbx
+	.cfi_def_cfa_offset 8
+	ret
+.L5:
+	.cfi_restore_state
+	movq	%rax, %rbx
+	movq	(%rsp), %rdi
+	leaq	16(%rsp), %rax
+	cmpq	%rax, %rdi
+	je	.L4
+	call	_ZdlPv@PLT
+.L4:
+	movq	%rbx, %rdi
+.LEHB2:
+	call	_Unwind_Resume@PLT
+.LEHE2:
+	.cfi_endproc
+.LFE1540:
+	.globl	__gxx_personality_v0
+	.section	.gcc_except_table,"a",@progbits
+.LLSDA1540:
+	.byte	0xff
+	.byte	0xff
+	.byte	0x1
+	.uleb128 .LLSDACSE1540-.LLSDACSB1540
+.LLSDACSB1540:
+	.uleb128 .LEHB0-.LFB1540
+	.uleb128 .LEHE0-.LEHB0
+	.uleb128 0
+	.uleb128 0
+	.uleb128 .LEHB1-.LFB1540
+	.uleb128 .LEHE1-.LEHB1
+	.uleb128 .L5-.LFB1540
+	.uleb128 0
+	.uleb128 .LEHB2-.LFB1540
+	.uleb128 .LEHE2-.LEHB2
+	.uleb128 0
+	.uleb128 0
+.LLSDACSE1540:
+	.text
+	.size	main, .-main
+	.type	_GLOBAL__sub_I_main, @function
+_GLOBAL__sub_I_main:
+.LFB2030:
+	.cfi_startproc
+	subq	$8, %rsp
+	.cfi_def_cfa_offset 16
+	leaq	_ZStL8__ioinit(%rip), %rdi
+	call	_ZNSt8ios_base4InitC1Ev@PLT
+	leaq	__dso_handle(%rip), %rdx
+	leaq	_ZStL8__ioinit(%rip), %rsi
+	movq	_ZNSt8ios_base4InitD1Ev@GOTPCREL(%rip), %rdi
+	call	__cxa_atexit@PLT
+	addq	$8, %rsp
+	.cfi_def_cfa_offset 8
+	ret
+	.cfi_endproc
+.LFE2030:
+	.size	_GLOBAL__sub_I_main, .-_GLOBAL__sub_I_main
+	.section	.init_array,"aw"
+	.align 8
+	.quad	_GLOBAL__sub_I_main
+	.local	_ZStL8__ioinit
+	.comm	_ZStL8__ioinit,1,1
+	.hidden	DW.ref.__gxx_personality_v0
+	.weak	DW.ref.__gxx_personality_v0
+	.section	.data.rel.local.DW.ref.__gxx_personality_v0,"awG",@progbits,DW.ref.__gxx_personality_v0,comdat
+	.align 8
+	.type	DW.ref.__gxx_personality_v0, @object
+	.size	DW.ref.__gxx_personality_v0, 8
+DW.ref.__gxx_personality_v0:
+	.quad	__gxx_personality_v0
+	.hidden	__dso_handle
+	.ident	"GCC: (Debian 8.3.0-6) 8.3.0"
+	.section	.note.GNU-stack,"",@progbits
diff --git a/20230406/strings-02.cpp b/20230406/strings-02.cpp
new file mode 100644
index 0000000..b45d044
--- /dev/null
+++ b/20230406/strings-02.cpp
@@ -0,0 +1,10 @@
+#include <iostream>
+#include <string>
+
+int main ()
+{
+  std::string hello = "Hello";
+  hello = hello + ", world!";
+  std::cout << hello << std::endl;
+  return 0;
+}
diff --git a/20230406/strings-03.cpp b/20230406/strings-03.cpp
new file mode 100644
index 0000000..8f4c771
--- /dev/null
+++ b/20230406/strings-03.cpp
@@ -0,0 +1,9 @@
+#include <stdio.h>
+#include <string>
+
+int main ()
+{
+  std::string hello = "Hello, world!";
+  printf ("%s\n", hello);
+  return 0;
+}
diff --git a/20230406/strings-04.cpp b/20230406/strings-04.cpp
new file mode 100644
index 0000000..ada5204
--- /dev/null
+++ b/20230406/strings-04.cpp
@@ -0,0 +1,9 @@
+#include <stdio.h>
+#include <string>
+
+int main ()
+{
+  std::string hello = "Hello, world!";
+  printf ("%zd\n", sizeof (hello));
+  return 0;
+}
diff --git a/20230406/strings-05.cpp b/20230406/strings-05.cpp
new file mode 100644
index 0000000..8533c37
--- /dev/null
+++ b/20230406/strings-05.cpp
@@ -0,0 +1,9 @@
+#include <iostream>
+#include <string>
+
+int main ()
+{
+  std::string hello = "Hello, world!\000Hallo, Welt!";
+  std::cout << hello << std::endl;
+  return 0;
+}
diff --git a/20230406/strings-06.cpp b/20230406/strings-06.cpp
new file mode 100644
index 0000000..e1c7960
--- /dev/null
+++ b/20230406/strings-06.cpp
@@ -0,0 +1,9 @@
+#include <stdio.h>
+#include <string>
+
+int main ()
+{
+  std::string hello = "Hello, world!";
+  printf ("%s\n", hello.c_str ());
+  return 0;
+}
diff --git a/20230406/strings-07.cpp b/20230406/strings-07.cpp
new file mode 100644
index 0000000..25d288b
--- /dev/null
+++ b/20230406/strings-07.cpp
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+int main ()
+{
+  char hello[42];
+  sprintf (hello, "The answer is: %d", 42);
+  printf ("%s\n", hello);
+  return 0;
+}
diff --git a/20230406/strings-08.cpp b/20230406/strings-08.cpp
new file mode 100644
index 0000000..d83567f
--- /dev/null
+++ b/20230406/strings-08.cpp
@@ -0,0 +1,11 @@
+#include <iostream>
+#include <string>
+#include <sstream>
+
+int main ()
+{
+  std::ostringstream hello;
+  hello << "The answer is: " << 42;
+  std::cout << hello << std::endl;
+  return 0;
+}
diff --git a/20230406/strings-09.cpp b/20230406/strings-09.cpp
new file mode 100644
index 0000000..7fd9239
--- /dev/null
+++ b/20230406/strings-09.cpp
@@ -0,0 +1,11 @@
+#include <iostream>
+#include <string>
+#include <sstream>
+
+int main ()
+{
+  std::ostringstream hello;
+  hello << "The answer is: " << 42;
+  std::cout << hello.str () << std::endl;
+  return 0;
+}
diff --git a/20230406/strings-10.cpp b/20230406/strings-10.cpp
new file mode 100644
index 0000000..fc05c5d
--- /dev/null
+++ b/20230406/strings-10.cpp
@@ -0,0 +1,11 @@
+#include <stdio.h>
+#include <string>
+#include <sstream>
+
+int main ()
+{
+  std::ostringstream hello;
+  hello << "The answer is: " << 42;
+  printf ("%s\n", hello.str ().c_str ());
+  return 0;
+}
diff --git a/20230406/strings-11.cpp b/20230406/strings-11.cpp
new file mode 100644
index 0000000..b5cfc39
--- /dev/null
+++ b/20230406/strings-11.cpp
@@ -0,0 +1,8 @@
+#include <iostream>
+
+int main ()
+{
+  const char *hello = "Hello, world!";
+  std::cout << hello << std::endl;
+  return 0;
+}
diff --git a/20230406/strings-12.cpp b/20230406/strings-12.cpp
new file mode 100644
index 0000000..b6a78d3
--- /dev/null
+++ b/20230406/strings-12.cpp
@@ -0,0 +1,8 @@
+#include <iostream>
+
+int main ()
+{
+  char *hello = "Hello, world!";
+  std::cout << hello << std::endl;
+  return 0;
+}
diff --git a/20230406/unicode-01.cpp b/20230406/unicode-01.cpp
new file mode 100644
index 0000000..6e1d337
--- /dev/null
+++ b/20230406/unicode-01.cpp
@@ -0,0 +1,8 @@
+#include <stdio.h>
+
+int main ()
+{
+  int Ä = 42;
+  printf ("Die Äntwort lautet: %d\n", Ä);
+  return 0;
+}
diff --git "a/20230406/\303\244" "b/20230406/\303\244"
new file mode 100755
index 0000000..50002fa
--- /dev/null
+++ "b/20230406/\303\244"
@@ -0,0 +1 @@
+echo "Hallo!"
-- 
GitLab