<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Der (Nichts-)Datentyp Void]]></title><description><![CDATA[<p>Hey.<br />
Ich hab mit der Such-Machiene nichts gefunden, also frag ich mal hier^^</p>
<p>Void ist ja ein Typ der nix zurückgibt...,<br />
daher wird er ja bei Funktionen ohne Return Wert verwendet.<br />
Syntax:</p>
<pre><code class="language-cpp">void Funktion(Parameter) 
{ 
// Do Stuff 
}
</code></pre>
<p>Aber ich habe auch gehört, bzw gelesen, dass es auch Void-Zeiger gibt, usw.</p>
<pre><code class="language-cpp">void* MyVoidPointer;
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> 1.) Was bringt so ein Void Zeiger?<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> 2.) Was gibt er zurück, falls er doch etwas rückgeben kann?<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> 3.) Wozu verwendet man ihn?<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> 4.) Wie verwendet man ihn?</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> 1.) Währe auch das hier möglich?</p>
<pre><code class="language-cpp">void Var;
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> 2.) Falls ja wozu könnte man das verwenden?<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> 3.)Falls ja wie kan man das verwenden?</p>
<p>Ich weiß jetzt nicht ob das eine dumme frage ist, oder ob es so etwas hier schon einmal gab.</p>
<p>Danke im Voraus.<br />
Mfg Wikinger75!^^</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/232333/der-nichts-datentyp-void</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 09:26:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/232333.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 21 Jan 2009 17:17:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Der (Nichts-)Datentyp Void on Wed, 21 Jan 2009 17:17:37 GMT]]></title><description><![CDATA[<p>Hey.<br />
Ich hab mit der Such-Machiene nichts gefunden, also frag ich mal hier^^</p>
<p>Void ist ja ein Typ der nix zurückgibt...,<br />
daher wird er ja bei Funktionen ohne Return Wert verwendet.<br />
Syntax:</p>
<pre><code class="language-cpp">void Funktion(Parameter) 
{ 
// Do Stuff 
}
</code></pre>
<p>Aber ich habe auch gehört, bzw gelesen, dass es auch Void-Zeiger gibt, usw.</p>
<pre><code class="language-cpp">void* MyVoidPointer;
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> 1.) Was bringt so ein Void Zeiger?<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> 2.) Was gibt er zurück, falls er doch etwas rückgeben kann?<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> 3.) Wozu verwendet man ihn?<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> 4.) Wie verwendet man ihn?</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> 1.) Währe auch das hier möglich?</p>
<pre><code class="language-cpp">void Var;
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> 2.) Falls ja wozu könnte man das verwenden?<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> 3.)Falls ja wie kan man das verwenden?</p>
<p>Ich weiß jetzt nicht ob das eine dumme frage ist, oder ob es so etwas hier schon einmal gab.</p>
<p>Danke im Voraus.<br />
Mfg Wikinger75!^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1649712</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1649712</guid><dc:creator><![CDATA[Wikinger75]]></dc:creator><pubDate>Wed, 21 Jan 2009 17:17:37 GMT</pubDate></item><item><title><![CDATA[Reply to Der (Nichts-)Datentyp Void on Wed, 21 Jan 2009 17:31:50 GMT]]></title><description><![CDATA[<p>1. Schau dir z.B. die Funktion qsort an.<br />
2. Eine Speicheradresse.<br />
3. Um die Adresse eines Objekts unbekannten Typs zu speichern.<br />
4. Eigentlich wie jeden anderen Pointer, nur dass man ihn, bevor man damit arbeitet, auf einen spezifischen Typ casten musss.</p>
<p>1. Nein</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1649721</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1649721</guid><dc:creator><![CDATA[__Stefan__]]></dc:creator><pubDate>Wed, 21 Jan 2009 17:31:50 GMT</pubDate></item><item><title><![CDATA[Reply to Der (Nichts-)Datentyp Void on Wed, 21 Jan 2009 18:00:04 GMT]]></title><description><![CDATA[<p>aber sit es nicht eigendlich auch ein kleines zeichen für ein eventuell falsches/schlechtes design?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1649731</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1649731</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Wed, 21 Jan 2009 18:00:04 GMT</pubDate></item><item><title><![CDATA[Reply to Der (Nichts-)Datentyp Void on Wed, 21 Jan 2009 18:19:23 GMT]]></title><description><![CDATA[<p>Wikinger75 schrieb:</p>
<blockquote>
<p>...Aber ich habe auch gehört, bzw gelesen, dass es auch Void-Zeiger gibt, usw.</p>
<pre><code class="language-cpp">void* MyVoidPointer;
</code></pre>
</blockquote>
<p>void und void* haben eigentlich nichts miteinander zu tun.</p>
<p>Wikinger75 schrieb:</p>
<blockquote>
<p>1.) Was bringt so ein Void Zeiger?<br />
2.) Was gibt er zurück, falls er doch etwas rückgeben kann?<br />
3.) Wozu verwendet man ihn?<br />
4.) Wie verwendet man ihn?</p>
</blockquote>
<p>Ein void-Zeiger ist ein Zeiger, der keine Informationen darüber hält auf was er zeigt. Im Prinzip kann ein void-Zeiger anstelle eines anderen Zeigers verwendet werden, und wird vorwiegend in C oder altem C++ Code verwendet. Bevor es Templates gab, dienten void-Zeiger z.B. zum Bau generischer Listen, nur das es dann der Anwender dafür sorgen musste, was sich genau dahinter verbirgt, wie es umzuwandeln ist...</p>
<p>Man sollte auch nicht auf die Idee kommen einen void-Zeiger per delete zu löschen, da dem Zeiger wie gesagt auch die Informationen fehlen was sich hinter der Speicheradresse wirklich verbirgt.</p>
<p>In Modernen C++ deutet ein void-Zeiger in der Regel auf schlechtes Design hin, und sollte zumindestens hinter Schnittstellen verborgen werden.</p>
<p>Ich werde absichtlich kein konkretes Anwendungsbeispiel bringen, da es Anfänger meist zu schlechten Code animert.</p>
<p>Wikinger75 schrieb:</p>
<blockquote>
<p>1.) Währe auch das hier möglich?</p>
<pre><code class="language-cpp">void Var;
</code></pre>
<p>2.) Falls ja wozu könnte man das verwenden?<br />
3.)Falls ja wie kan man das verwenden?</p>
</blockquote>
<p>Nein, womit 2 und 3 auch hinfällig werden.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1649742</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1649742</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 21 Jan 2009 18:19:23 GMT</pubDate></item><item><title><![CDATA[Reply to Der (Nichts-)Datentyp Void on Wed, 21 Jan 2009 18:45:15 GMT]]></title><description><![CDATA[<p>Wikinger75 schrieb:</p>
<blockquote>
<p>[..]Ich hab mit der Such-Machiene nichts gefunden[..]</p>
</blockquote>
<p>Dann bist du ja fündig geworden. :p (als ich den Satz nachdem Titel gelesen habe, musste ich echt schmunzeln. :))</p>
<blockquote>
<p>In Modernen C++ deutet ein void-Zeiger in der Regel auf schlechtes Design hin, und sollte zumindestens hinter Schnittstellen verborgen werden.</p>
<p>Ich werde absichtlich kein konkretes Anwendungsbeispiel bringen, da es Anfänger meist zu schlechten Code animert.</p>
</blockquote>
<p>Aber die gute Alternative zeigst du nicht? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>In C++ arbeitet, wie schon gesagt eher mit templates und wenn man eine Liste von mehr oder weniger unterschiedlichen Datentypen braucht, welche aber eine gemeinsame Schnittstelle anbieten, dann ist dafür eine gemeinsame abstrakte Basisklasse zu empfehlen. (Auf die kann man dann auch gefahrenlos delete anwenden, sofern der Destruktor der Basisklasse virtuell ist).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1649762</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1649762</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 21 Jan 2009 18:45:15 GMT</pubDate></item><item><title><![CDATA[Reply to Der (Nichts-)Datentyp Void on Wed, 21 Jan 2009 19:03:19 GMT]]></title><description><![CDATA[<p>beispiel:</p>
<pre><code class="language-cpp">void ausgeben(void * stuff)    // alt...
{
    cout &lt;&lt; *stuff &lt;&lt; endl;
}

template&lt;class _T&gt;             // neu mit template
void ausgeben(_T stuff)
{
    cout &lt;&lt; stuff &lt;&lt; endl;
}
</code></pre>
<p>so ist das doch oder?<br />
(ich hab selber noch nie mit voidpointern gearbeitet deswegen frag ich)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1649778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1649778</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Wed, 21 Jan 2009 19:03:19 GMT</pubDate></item><item><title><![CDATA[Reply to Der (Nichts-)Datentyp Void on Wed, 21 Jan 2009 19:08:34 GMT]]></title><description><![CDATA[<p>In der WinAPI gibts z.B. die Funktion <em>CreateThread</em>, die einen Thread erzeugt und einen Funktionszeiger übergeben bekommt, dessen Funktion dann ausgeführt wird (als Thread).</p>
<p><em>CreateThread</em> hat jetzt noch die Möglichkeit, dieser Funktion die sie als Funktionszeiger übergeben bekommt ein gewissen Parameter beim Aufruf &quot;als Thread&quot; mitzugeben. Da man aber nicht weiß, welchen Typ dieser Parameter haben könnte (es soll ja allgemein sein) und es eine C API ist, benutzt man einen void Zeiger.</p>
<p>Die Funktion muss dann ihren übergebenen void Zeiger in den entsprechenden Typ konventieren und hoffen, dass der Typ stimmt, ansonsten gibts einen netten Absturz.</p>
<pre><code class="language-cpp">void threadFunktion(void* parameter) {
int* data = (int*)parameter.
}
</code></pre>
<p>In C++ würde man allerdings den Cast durch einen reinterpret_cast oder static_cast ersetzten.</p>
<pre><code class="language-cpp">int* data = reinterpret_cast&lt;int*&gt;(paramter);
</code></pre>
<p>In C++ würde man das ganze Problem aber sowieso mit Templates bei <em>CreateThread</em> anstatt void Zeigern lösen, so dass man dann bequem und typsicher schreiben kann:</p>
<pre><code class="language-cpp">void threadFunktion(int data) {
}
</code></pre>
<p>In C++ benutzt man eigentlich fast nur dann void Zeiger, wenn man gerade auf C API's zugreift, bzw. diese wrappt.</p>
<p>Falls du das nicht verstehst, schlage <em>CreateThread</em> / <em>wrapper</em> bei Google nach.</p>
<p>Die Motivation bei C++ ist eben weg von dem alten C zu kommen und ein bisschen sauberer zu coden, wie eben in Java. Aber reden wir nicht von Java ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1649783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1649783</guid><dc:creator><![CDATA[helperlccasd]]></dc:creator><pubDate>Wed, 21 Jan 2009 19:08:34 GMT</pubDate></item><item><title><![CDATA[Reply to Der (Nichts-)Datentyp Void on Wed, 21 Jan 2009 19:09:46 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>so ist das doch oder?<br />
(ich hab selber noch nie mit voidpointern gearbeitet deswegen frag ich)</p>
</blockquote>
<p>In C wurden halt Funktionspointer als void* übergeben, was in C++ mit Funktoren oder Funktionen geht, da lediglich etwas übergeben werden muss, wo der ()-Operator angewendet werden kann. (Rückgabewert und Parameter müssen nat. auch noch stimmen..).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1649785</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1649785</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 21 Jan 2009 19:09:46 GMT</pubDate></item><item><title><![CDATA[Reply to Der (Nichts-)Datentyp Void on Wed, 21 Jan 2009 19:12:11 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>beispiel:</p>
<pre><code class="language-cpp">void ausgeben(void * stuff)    // alt...
{
    cout &lt;&lt; *stuff &lt;&lt; endl;
}

template&lt;class _T&gt;             // neu mit template
void ausgeben(_T stuff)
{
    cout &lt;&lt; stuff &lt;&lt; endl;
}
</code></pre>
<p>so ist das doch oder?<br />
(ich hab selber noch nie mit voidpointern gearbeitet deswegen frag ich)</p>
</blockquote>
<p>Bei der C Variante müsstest du den void Zeiger <em>stuff</em> noch gefährlicherweise und unsichererweise und unschönerweise (lol) in einen entsprechenden explizit angegebenen Typ casten.<br />
Der Operator * bei einem ungecastetem void Zeiger ist übrigens so eine Sache... ich meine <em>void</em> kann ja nicht als Datentyp rauskommen, den gibts ja nicht.<br />
Könnte sogar ein Compile-fehler geben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1649788</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1649788</guid><dc:creator><![CDATA[helperlccasd]]></dc:creator><pubDate>Wed, 21 Jan 2009 19:12:11 GMT</pubDate></item><item><title><![CDATA[Reply to Der (Nichts-)Datentyp Void on Wed, 21 Jan 2009 20:40:56 GMT]]></title><description><![CDATA[<p>Ja Dnake für eure Antworten^^</p>
<p>Ich wollte den auch nicht benutzen, nur bei paar Bibliotheken aus dem C++ wie in istream und wahrscheinlich auch in anderen streams ein</p>
<pre><code class="language-cpp">void&amp;
</code></pre>
<p>definiert ist, der eine Adresse einlist und in einem Zeiger abspeichert oder bei ostream, da gibts einen void* Zeiger der eine Adresse als hexadezimal ausgibt, allerding wird dieser je nach Typ von ostream verwaltet mit dem &lt;&lt; operator aufgerufen...</p>
<p>Ich hab nur nachgefragt was es mit dem nun aufsich hat.<br />
Was ich nun weis und worum ich schlauer geworden bin:^^</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> void* ist nur wegen Kombitaliltäs-Gründen aus C mitgenommen.</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> In C++ benutzt man die Templates(Die ich sowieso schon kenne und deren Anwendung) statt des void* da der anfällig für Fehler ist.</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> void und void* sind zwei verschiedene Dinge.</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> Void's besitzen keinen rückgabe Typen und man sollte nicht veruschen etwas mit new und delete hinzubekommen.</p>
<p>Mehr wollte ich nicht wissen^^.<br />
Danke Leute!</p>
<p>PS: Jedoch währe bei der Funktion mit Template doch ein Fehler möglich <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<pre><code class="language-cpp">template&lt;class T&gt; 
void function(T Parameter)
{
    cout &lt;&lt; Parameter &lt;&lt; endl;
}
</code></pre>
<p>Damit könnte man wenn man es beabsichtigt folgendes schreiben, was zu einem Fehler führen würde^^</p>
<pre><code class="language-cpp">int main()
{
void* MyVoidZeiger;
function(MyVoidZeiger);
}
</code></pre>
<p>Normaler Weise gebä es hier einen Compiler fehler, oder würde da der Compiler mitmachen?^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1649846</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1649846</guid><dc:creator><![CDATA[Wikinger75]]></dc:creator><pubDate>Wed, 21 Jan 2009 20:40:56 GMT</pubDate></item><item><title><![CDATA[Reply to Der (Nichts-)Datentyp Void on Wed, 21 Jan 2009 20:46:35 GMT]]></title><description><![CDATA[<p>Warum sollte das ein Fehler sein? - Du gibst lediglich die Adresse eines Zeigers aus. (Halt auf ein void, aber das ist dem Zeiger egal)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1649857</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1649857</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 21 Jan 2009 20:46:35 GMT</pubDate></item><item><title><![CDATA[Reply to Der (Nichts-)Datentyp Void on Wed, 21 Jan 2009 21:28:27 GMT]]></title><description><![CDATA[<p>Wikinger75 schrieb:</p>
<blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> void* ist nur wegen Kombitaliltäs-Gründen aus C mitgenommen.</p>
</blockquote>
<p>Falsch, void* braucht man u.a. fürs Speichermanagement. operator new gibt z.B. void* zurück.</p>
<blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> In C++ benutzt man die Templates(Die ich sowieso schon kenne und deren Anwendung) statt des void* da der anfällig für Fehler ist.</p>
</blockquote>
<p>Ansichtssache. Es ist eher so, dass man in C keine Templates hat und deshalb Workarounds mit void-Pointern bauen muss <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> Void's besitzen keinen rückgabe Typen und man sollte nicht veruschen etwas mit new und delete hinzubekommen.</p>
</blockquote>
<p>Hä?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1649877</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1649877</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Wed, 21 Jan 2009 21:28:27 GMT</pubDate></item><item><title><![CDATA[Reply to Der (Nichts-)Datentyp Void on Wed, 21 Jan 2009 21:51:52 GMT]]></title><description><![CDATA[<p>Bei void-Funktionen und Rückgabe ist das so ne Sache. Man könnte sagen, sie geben void zurück, denn sowas ist ja möglich:</p>
<pre><code class="language-cpp">void fun1() {}
void fun2()
{
    return fun1();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1649890</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1649890</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 21 Jan 2009 21:51:52 GMT</pubDate></item><item><title><![CDATA[Reply to Der (Nichts-)Datentyp Void on Thu, 22 Jan 2009 09:12:53 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>Falsch, void* braucht man u.a. fürs Speichermanagement. operator new gibt z.B. void* zurück.</p>
</blockquote>
<p><code>new</code> gibt den einen passenden Pointer-Typen zurück, und kein void*.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1650018</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1650018</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 22 Jan 2009 09:12:53 GMT</pubDate></item><item><title><![CDATA[Reply to Der (Nichts-)Datentyp Void on Thu, 22 Jan 2009 09:25:39 GMT]]></title><description><![CDATA[<p>Wirklich?<br />
Ich finde in 3.7.3 2 nur void* als Rückgabetyp für den globalen operator new.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1650029</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1650029</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 22 Jan 2009 09:25:39 GMT</pubDate></item><item><title><![CDATA[Reply to Der (Nichts-)Datentyp Void on Thu, 22 Jan 2009 09:31:12 GMT]]></title><description><![CDATA[<p>Weil der globale _Operator_ new nur für die Speicherallozierung zuständig ist, die das _Schlüsselwort_ new (Also ein new-Ausruck) benötigt. Tachyon hat also etwas anderes gemeint als Bashar und beide haben Recht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1650032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1650032</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 22 Jan 2009 09:31:12 GMT</pubDate></item><item><title><![CDATA[Reply to Der (Nichts-)Datentyp Void on Thu, 22 Jan 2009 10:56:08 GMT]]></title><description><![CDATA[<p>Decimad schrieb:</p>
<blockquote>
<p>Weil der globale _Operator_ new nur für die Speicherallozierung zuständig ist, die das _Schlüsselwort_ new (Also ein new-Ausruck) benötigt.</p>
</blockquote>
<p>falsch.<br />
die operator new gibt einen void* zurück und der operator new gibt einen spezifischen zeiger zurück.</p>
<p>(DIE globale funktion namens operator new gibt einen void* zurück. DER globale operator namens operator new gibt einen spezifischen zeiger zurück. der operator new benutzt die operator new, um speicher zu besorgen und ruft dann den konstruktor auf und gibt den vollkonstruierten speicher zurück.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1650083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1650083</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 22 Jan 2009 10:56:08 GMT</pubDate></item><item><title><![CDATA[Reply to Der (Nichts-)Datentyp Void on Thu, 22 Jan 2009 12:53:54 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>(DIE globale funktion namens operator new gibt einen void* zurück. DER globale operator namens operator new gibt einen spezifischen zeiger zurück. der operator new benutzt die operator new, um speicher zu besorgen und ruft dann den konstruktor auf und gibt den vollkonstruierten speicher zurück.)</p>
</blockquote>
<p>Naja, ganz klar ist das auch nicht, zumal Operatoren auch Funktionen sind. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Aber ich denke, wir wissen alle, was gemeint ist... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<pre><code class="language-cpp">T* Ptr = new T;  // new-Operator -&gt; T*
void* Mem  = operator new(sizeof(T)); // operator new -&gt; void*
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1650151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1650151</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 22 Jan 2009 12:53:54 GMT</pubDate></item><item><title><![CDATA[Reply to Der (Nichts-)Datentyp Void on Thu, 22 Jan 2009 13:02:12 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Naja, ganz klar ist das auch nicht, zumal Operatoren auch Funktionen sind. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>falsch. der operator new und der operator sizeof verarbeiten einen typen, das können funktionen nicht.</p>
<blockquote>
<pre><code class="language-cpp">T* Ptr = new T;  // new-Operator -&gt; T*
void* Mem  = operator new(sizeof(T)); // operator new -&gt; void*
</code></pre>
</blockquote>
<p>aber &quot;new-Operator&quot; und &quot;operator new&quot; sind keine guten unterscheidungen, zumal der &quot;new-Operator&quot; den in c++ namen &quot;operator new&quot; trägt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1650159</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1650159</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 22 Jan 2009 13:02:12 GMT</pubDate></item><item><title><![CDATA[Reply to Der (Nichts-)Datentyp Void on Thu, 22 Jan 2009 13:10:46 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>der operator new und der operator sizeof verarbeiten einen typen, das können funktionen nicht.</p>
</blockquote>
<p>Stimmt schon. Trotzdem finde ich die Unterscheidung nur auf Grund des Artikels fragwürdig. Operatoren sind schlussendlich beides...</p>
<p>Am klarsten ist es wohl, wenn man einfach nur <code>new</code> respektive <code>operator new</code> sagt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1650166</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1650166</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 22 Jan 2009 13:10:46 GMT</pubDate></item><item><title><![CDATA[Reply to Der (Nichts-)Datentyp Void on Thu, 22 Jan 2009 13:19:51 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>volkard schrieb:</p>
<blockquote>
<p>der operator new und der operator sizeof verarbeiten einen typen, das können funktionen nicht.</p>
</blockquote>
<p>Stimmt schon. Trotzdem finde ich die Unterscheidung nur auf Grund des Artikels fragwürdig. Operatoren sind schlussendlich beides...</p>
</blockquote>
<p>Warum das denn?<br />
Ist printf() ein Operator? Wäre mir neu. Und genausowenig ist die Funktion operator new ein Operator.</p>
<blockquote>
<p>Am klarsten ist es wohl, wenn man einfach nur <code>new</code> respektive <code>operator new</code> sagt.</p>
</blockquote>
<p>aber beide heißen</p>
<pre><code class="language-cpp">operator new
</code></pre>
<p>das ist fakt. eure unterscheidungen sind erfunden.</p>
<p>wenn du es klar machen willst, sag bei der funktion immer &quot;Funktion&quot; dazu und beim operator immer &quot;Operator&quot;. ausnahmsweise ien grund für großschrift.<br />
also<br />
- die Funktion operator new<br />
- der Operator operator new</p>
<p>aber bereits<br />
- die Funktion new<br />
- der Operator new<br />
wird mißverstanden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1650181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1650181</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 22 Jan 2009 13:19:51 GMT</pubDate></item><item><title><![CDATA[Reply to Der (Nichts-)Datentyp Void on Thu, 22 Jan 2009 13:26:26 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<blockquote>
<p>Am klarsten ist es wohl, wenn man einfach nur <code>new</code> respektive <code>operator new</code> sagt.</p>
</blockquote>
<p>aber beide heißen</p>
<pre><code class="language-cpp">operator new
</code></pre>
<p>das ist fakt. eure unterscheidungen sind erfunden.</p>
</blockquote>
<p>Der Operator <code>new</code> heißt <code>operator new</code> ? In welchem Kontext?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1650191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1650191</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Thu, 22 Jan 2009 13:26:26 GMT</pubDate></item><item><title><![CDATA[Reply to Der (Nichts-)Datentyp Void on Thu, 22 Jan 2009 13:27:09 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Ist printf() ein Operator? Wäre mir neu. Und genausowenig ist die Funktion operator new ein Operator.</p>
</blockquote>
<p>Sind für dich Überladungen von <code>operator+</code> und <code>operator=</code> auch keine Operatoren?</p>
<p>volkard schrieb:</p>
<blockquote>
<p>wenn du es klar machen willst, sag bei der funktion immer &quot;Funktion&quot; dazu und beim operator immer &quot;Operator&quot;. ausnahmsweise ien grund für großschrift.<br />
also<br />
- die Funktion operator new<br />
- der Operator operator new</p>
</blockquote>
<p>Abgesehen davon, dass das niemand tun wird (vor allem &quot;Operator operator new&quot; zu sagen), bezweifle ich auch, dass das wirklich Klarheit schafft.</p>
<p>Und wenn man von <code>new</code> spricht, denkt man immer zuerst an den Operator, der Speicher anfordert und gleichzeitig Objekte konstruiert. Bei <code>operator new</code> denkt man schon eher an die reine Speicheranforderung. Oft erschliesst sich das sowieso aus dem Kontext. Aber mit &quot;die operator new&quot; und &quot;der operator new&quot; ist sicher niemandem geholfen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1650192</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1650192</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 22 Jan 2009 13:27:09 GMT</pubDate></item><item><title><![CDATA[Reply to Der (Nichts-)Datentyp Void on Thu, 22 Jan 2009 13:32:01 GMT]]></title><description><![CDATA[<p>Bei sauberen C++ Design, sollte sich die Anwendung von void * auf eigentlich wenige Faelle beschraenken.</p>
<p>- Kompativlitaet zu C<br />
Klar, C arbeitet gern und oft mit untypisierten Zeigern.</p>
<p>- als abstracter Datentyp, der einfach nur eindeutig sein muss ...<br />
Oftmals verwendet man sowas wie Handles. Die einfach ein Object beliebigen Types eindeutig referenzieren soll. meist nimmt man dann die adresse des objects und verkauft es als &quot;handle&quot; weiter.<br />
Die Dinger ueber templates zu typisieren macht eher weniger Sinn, weil der Anwender dann da typen reinbekommt, die ihm wahrscheinlich(bewusst) keinerlei Mehrwert bieten, und eine generizitaet auf seiten des anwenders einfach verhindern.<br />
Nen Interface zu bauen was gar nix kann, und jegliches anderes interface davon abzuleiten waer glaub ich auch ned im Sinne des OOP Gedanken ... da wuerd ich nen void * bevorzugen.</p>
<p>- als Transportmedium fuer unbestimmte Daten, bzw als reine Adresse fuer die Speicherverwaltung.<br />
Ob man bei zeigern auf Speicherbereiche, wo man &quot;am Anfang&quot; gar ned weiss was drinne steht, und erst spaeter ermittelt, was genau da drinne iss und das dann castet, ob man da char * oder void * nimmt ist eher geschmackssache. Ich find void ned so verkehrt, weil es sind zwar physisch immer Bloecke von Bytes, aber logisch kann man schon weiter abstrahieren ...</p>
<p>Ciao ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1650200</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1650200</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Thu, 22 Jan 2009 13:32:01 GMT</pubDate></item><item><title><![CDATA[Reply to Der (Nichts-)Datentyp Void on Thu, 22 Jan 2009 13:39:27 GMT]]></title><description><![CDATA[<p>RHBaum schrieb:</p>
<blockquote>
<p>- als abstracter Datentyp, der einfach nur eindeutig sein muss ...</p>
</blockquote>
<p>Das ist aber unsauber und in C++ nicht wirklich nötig. Meistens kennt man den Typen, und dann kann man auch typsichere Sprachmittel verwenden. Falls es doch noch Fälle gibt mit dynamischen Typen, gibt es auch entsprechende Methoden, die <code>void*</code> in den Schatten stellen (z.B. <em>Boost.Any</em>, <em>Boost.Variant</em>).</p>
<p>RHBaum schrieb:</p>
<blockquote>
<p>Die Dinger ueber templates zu typisieren macht eher weniger Sinn, weil der Anwender dann da typen reinbekommt, die ihm wahrscheinlich(bewusst) keinerlei Mehrwert bieten, und eine generizitaet auf seiten des anwenders einfach verhindern.</p>
</blockquote>
<p>Typsicherheit ist kein Mehrwert?<br />
Und wie sollte durch Templates die Generizität verhindert werden?</p>
<p>RHBaum schrieb:</p>
<blockquote>
<p>- als Transportmedium fuer unbestimmte Daten, bzw als reine Adresse fuer die Speicherverwaltung.<br />
Ob man bei zeigern auf Speicherbereiche, wo man &quot;am Anfang&quot; gar ned weiss was drinne steht, und erst spaeter ermittelt, was genau da drinne iss und das dann castet, ob man da char * oder void * nimmt ist eher geschmackssache. Ich find void ned so verkehrt, weil es sind zwar physisch immer Bloecke von Bytes, aber logisch kann man schon weiter abstrahieren ...</p>
</blockquote>
<p>Auch das trifft man bei hinreichender Abstraktion kaum an. Höchstens, wenn man eigene Speicherverwaltung implementiert. Es kommt aber selten vor, dass man mal x Bytes allokiert, nicht weiss, wofür die stehen, und dann willkürlich irgendeinen Typen da reinsetzt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1650205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1650205</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 22 Jan 2009 13:39:27 GMT</pubDate></item><item><title><![CDATA[Reply to Der (Nichts-)Datentyp Void on Thu, 22 Jan 2009 13:52:41 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>Der Operator <code>new</code> heißt <code>operator new</code> ? In welchem Kontext?</p>
</blockquote>
<p>Hast recht. In keinem Kontext.<br />
Der Operator &quot;+&quot; heißt auch nicht &quot;operator +&quot;, sondern nur &quot;+&quot;, während die ihn implementierende Funktion &quot;operator +&quot; heißt. Sehr sonderbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1650215</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1650215</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 22 Jan 2009 13:52:41 GMT</pubDate></item></channel></rss>