<?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[Methodenaufrufe, ohne dass zuvor ein Obj angelegt wird.]]></title><description><![CDATA[<pre><code class="language-cpp">class Klasse{
	private:
		static int i;
	public:
		int getI(){
			return i;
		}
};

int Klasse::i = 0;

int main(){
	//Klappt
	Klasse* p[] = {NULL};
	std::cout &lt;&lt; (*p)-&gt;getI();

	//Klappt
	Klasse* p1[1];
	std::cout &lt;&lt; (*p)-&gt;getI();

	//Klappt
	Klasse* p2 = NULL;
	std::cout &lt;&lt; p2-&gt;getI();

	//Klappt nicht!
	Klasse* p3;
	std::cout &lt;&lt; p3-&gt;getI();

	std::system(&quot;PAUSE&quot;);
	return 0;
}
</code></pre>
<p>Hallo!</p>
<p>Kann mir einer erklären, warum die ersten 3 Aufrufe funktionieren und der letzte nicht?</p>
<p>Und wie sieht es damit aus, eine nichtstatische Methode aufzurufen, ohne zuvor ein Objekt der jeweiligen Klasse angelegt zu haben? Klappt das immer?<br />
Denn meines Wissens nach legt der Compiler die Methoden stets beim Programmstart an und das insgesamt ein mal.<br />
Also ist folgender Aufruf:</p>
<pre><code class="language-cpp">Klasse p* = NULL;
p-&gt;Methode();
</code></pre>
<p>wohl auch kein Zugriff auf irgendein Objektelement (ob nun vorhanden oder nicht), sondern ein simpler Aufruf von Methode(), welche ja außerhalb jedes Objekte liegt.<br />
Lieg ich damit richtig?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/240859/methodenaufrufe-ohne-dass-zuvor-ein-obj-angelegt-wird</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 07:33:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/240859.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 12 May 2009 18:01:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Methodenaufrufe, ohne dass zuvor ein Obj angelegt wird. on Tue, 12 May 2009 18:01:58 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class Klasse{
	private:
		static int i;
	public:
		int getI(){
			return i;
		}
};

int Klasse::i = 0;

int main(){
	//Klappt
	Klasse* p[] = {NULL};
	std::cout &lt;&lt; (*p)-&gt;getI();

	//Klappt
	Klasse* p1[1];
	std::cout &lt;&lt; (*p)-&gt;getI();

	//Klappt
	Klasse* p2 = NULL;
	std::cout &lt;&lt; p2-&gt;getI();

	//Klappt nicht!
	Klasse* p3;
	std::cout &lt;&lt; p3-&gt;getI();

	std::system(&quot;PAUSE&quot;);
	return 0;
}
</code></pre>
<p>Hallo!</p>
<p>Kann mir einer erklären, warum die ersten 3 Aufrufe funktionieren und der letzte nicht?</p>
<p>Und wie sieht es damit aus, eine nichtstatische Methode aufzurufen, ohne zuvor ein Objekt der jeweiligen Klasse angelegt zu haben? Klappt das immer?<br />
Denn meines Wissens nach legt der Compiler die Methoden stets beim Programmstart an und das insgesamt ein mal.<br />
Also ist folgender Aufruf:</p>
<pre><code class="language-cpp">Klasse p* = NULL;
p-&gt;Methode();
</code></pre>
<p>wohl auch kein Zugriff auf irgendein Objektelement (ob nun vorhanden oder nicht), sondern ein simpler Aufruf von Methode(), welche ja außerhalb jedes Objekte liegt.<br />
Lieg ich damit richtig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709554</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709554</guid><dc:creator><![CDATA[eine Frage bitte]]></dc:creator><pubDate>Tue, 12 May 2009 18:01:58 GMT</pubDate></item><item><title><![CDATA[Reply to Methodenaufrufe, ohne dass zuvor ein Obj angelegt wird. on Tue, 12 May 2009 18:31:41 GMT]]></title><description><![CDATA[<p>Nichts davon ist definiertes Verhalten (evt. letzteres, wenn Methode static ist, da müsst ich jetzt aber im Standard nachschauen), von daher macht es keinen Sinn darüber zu diskutieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709561</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709561</guid><dc:creator><![CDATA[Tippgeber]]></dc:creator><pubDate>Tue, 12 May 2009 18:31:41 GMT</pubDate></item><item><title><![CDATA[Reply to Methodenaufrufe, ohne dass zuvor ein Obj angelegt wird. on Tue, 12 May 2009 18:36:01 GMT]]></title><description><![CDATA[<p>Es ist schlicht und einfach undefiniertes Verhalten. Die Welt könnte explodieren, deine Festplatte gelöscht werden oder Microsoft pleite gehen. Es kann funktionieren, weil es irgendwie grad reinpasst, aber du kannst dich nie im Leben darauf verlassen.<br />
Wenn du eine nicht statische Methode aufrufst, brauchst du ein gültiges Objekt dazu. Sonst ist es eben undefiniert.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709563</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709563</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 12 May 2009 18:36:01 GMT</pubDate></item><item><title><![CDATA[Reply to Methodenaufrufe, ohne dass zuvor ein Obj angelegt wird. on Tue, 12 May 2009 18:48:35 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>Wenn du eine nicht statische Methode aufrufst, brauchst du ein gültiges Objekt dazu. Sonst ist es eben undefiniert.</p>
</blockquote>
<p>Gilt das auch für PODs?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709569</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709569</guid><dc:creator><![CDATA[Mitleid]]></dc:creator><pubDate>Tue, 12 May 2009 18:48:35 GMT</pubDate></item><item><title><![CDATA[Reply to Methodenaufrufe, ohne dass zuvor ein Obj angelegt wird. on Tue, 12 May 2009 22:14:26 GMT]]></title><description><![CDATA[<p>Mitleid schrieb:</p>
<blockquote>
<p>Dravere schrieb:</p>
<blockquote>
<p>Wenn du eine nicht statische Methode aufrufst, brauchst du ein gültiges Objekt dazu. Sonst ist es eben undefiniert.</p>
</blockquote>
<p>Gilt das auch für PODs?</p>
</blockquote>
<p>Das ist eine gute Frage. Im Zweifelsfall würde ich aber sagen: ja.</p>
<p>Bzw. die noch bessere Frage ist eigentlich: muss man ein Objekt vom Typ T an einer bestimmten Adresse konstruiert haben, damit es OK ist, mit dieser Adresse als &quot;this&quot; Pointer, eine bestimmte Member-Funktion T::F() aufzurufen, wenn T ein POD 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>
]]></description><link>https://www.c-plusplus.net/forum/post/1709657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709657</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 12 May 2009 22:14:26 GMT</pubDate></item><item><title><![CDATA[Reply to Methodenaufrufe, ohne dass zuvor ein Obj angelegt wird. on Tue, 12 May 2009 22:29:35 GMT]]></title><description><![CDATA[<p>Gegenfrage:<br />
Wieso sollte das nicht auch für PODs gelten? Zugriff auf Speicher, welcher dir nicht gehört, ist undefiniert. Oder auf was wollt ihr hinaus?</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709666</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709666</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 12 May 2009 22:29:35 GMT</pubDate></item><item><title><![CDATA[Reply to Methodenaufrufe, ohne dass zuvor ein Obj angelegt wird. on Wed, 13 May 2009 00:03:48 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>Gegenfrage:<br />
Wieso sollte das nicht auch für PODs gelten? Zugriff auf Speicher, welcher dir nicht gehört, ist undefiniert. Oder auf was wollt ihr hinaus?</p>
<p>Grüssli</p>
</blockquote>
<p>Ich denke nicht an Speicher der nicht mir gehört. Ich denke an sowas:</p>
<pre><code class="language-cpp">struct POD
{
    int value;
    void F() {}
};

void test()
{
    void* mem = new char[sizeof(POD)];

    POD* pod = static_cast&lt;POD*&gt;(mem);

    pod-&gt;value = 123; // OK
    pod-&gt;F(); // OK oder UB???

    delete [] static_cast&lt;char*&gt;(mem);
}
</code></pre>
<p>Ich schätze aber fast, dass es in diesem Beispiel OK sein müsste. Schätze. Nix wissen. <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="🙂"
    /><br />
(Nicht dass ich vor hätte solchen Code zu schreiben, ist mir noch nie was untergekommen wo ich sowas hätte brauchen können)</p>
<p>p.S.: worauf der OP hinaus will, weiss ich nicht. Vermutlich auf grossen Unfug <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709674</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709674</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 13 May 2009 00:03:48 GMT</pubDate></item><item><title><![CDATA[Reply to Methodenaufrufe, ohne dass zuvor ein Obj angelegt wird. on Wed, 13 May 2009 05:59:10 GMT]]></title><description><![CDATA[<p>Ist denn <code>this</code> ein POD?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709704</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709704</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 13 May 2009 05:59:10 GMT</pubDate></item><item><title><![CDATA[Reply to Methodenaufrufe, ohne dass zuvor ein Obj angelegt wird. on Wed, 13 May 2009 06:23:38 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Ist denn <code>this</code> ein POD?</p>
</blockquote>
<p>Hä <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
Was für ein <code>this</code> ?<br />
Blub?<br />
Nix versteh...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709718</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709718</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 13 May 2009 06:23:38 GMT</pubDate></item><item><title><![CDATA[Reply to Methodenaufrufe, ohne dass zuvor ein Obj angelegt wird. on Wed, 13 May 2009 06:35:33 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Tachyon schrieb:</p>
<blockquote>
<p>Ist denn <code>this</code> ein POD?</p>
</blockquote>
<p>Hä <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
Was für ein <code>this</code> ?<br />
Blub?<br />
Nix versteh...</p>
</blockquote>
<p>Ich nehme mal an er meint: &quot;Ist den <code>this</code> für ein POD definiert?&quot;<br />
(Alleine schon durch die Rahmenbedingungen die für ein POD existieren, wage ich das zu bezweifeln)</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709724</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709724</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 13 May 2009 06:35:33 GMT</pubDate></item><item><title><![CDATA[Reply to Methodenaufrufe, ohne dass zuvor ein Obj angelegt wird. on Wed, 13 May 2009 06:44:32 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p>Dann ist dies...</p>
<pre><code class="language-cpp">struct NoPODQuestionmark
{
    int a;
    void f()
    {
        this-&gt;a = 10;
    }
};
</code></pre>
<p>...kein POD mehr, weil man in <code>NoPODQuestionmark::f() this</code> dereferenziert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709731</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709731</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 13 May 2009 06:44:32 GMT</pubDate></item><item><title><![CDATA[Reply to Methodenaufrufe, ohne dass zuvor ein Obj angelegt wird. on Wed, 13 May 2009 07:05:09 GMT]]></title><description><![CDATA[<p>Natürlich haben PODs einen this-Pointer.<br />
Auf was ihr immer für Ideen kommt... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709744</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709744</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 13 May 2009 07:05:09 GMT</pubDate></item><item><title><![CDATA[Reply to Methodenaufrufe, ohne dass zuvor ein Obj angelegt wird. on Wed, 13 May 2009 07:11:09 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Natürlich haben PODs einen this-Pointer.<br />
Auf was ihr immer für Ideen kommt... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>Ja, nur dass der anders hergeleitet wird, als bei nicht-POD-Typen. Daher ist Dein Beispiel von oben auch kein UB.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709750</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709750</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 13 May 2009 07:11:09 GMT</pubDate></item><item><title><![CDATA[Reply to Methodenaufrufe, ohne dass zuvor ein Obj angelegt wird. on Wed, 13 May 2009 07:13:49 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>...kein POD mehr, weil man in <code>NoPODQuestionmark::f() this</code> dereferenziert?</p>
</blockquote>
<p>Ich musste mir gerade nochmal die POD-Definition durchlesen, du hast recht. Ich habe so selten mit POD zu tun, das mir nicht bewusst war das nicht-statische Methoden möglich sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709756</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709756</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 13 May 2009 07:13:49 GMT</pubDate></item><item><title><![CDATA[Reply to Methodenaufrufe, ohne dass zuvor ein Obj angelegt wird. on Wed, 13 May 2009 09:44:31 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Ich denke nicht an Speicher der nicht mir gehört. Ich denke an sowas: ...</p>
</blockquote>
<p>Nicht ganz das, was der Threadersteller macht <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 so, hmmmm ...<br />
Theoretisch, wäre sowas ja nichts anderes als:</p>
<pre><code class="language-cpp">char arr[sizeof(int)];
int* p = reinterpret_cast&lt;int*&gt;(&amp;arr[0]);
*p = 10;
</code></pre>
<p>Und sowas ist doch erlaubt? Daher wäre es wahrscheinlich erlaubt ...<br />
Ich würde es aber trotzdem über ein Placement New machen <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>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709834</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 13 May 2009 09:44:31 GMT</pubDate></item><item><title><![CDATA[Reply to Methodenaufrufe, ohne dass zuvor ein Obj angelegt wird. on Wed, 13 May 2009 10:28:25 GMT]]></title><description><![CDATA[<p>Gestützt auf §3.8 würde ich sagen, dass es bei einem POD reicht den Speicher zu reservieren und das Objekt ist gültig, daher ist der Funktionsaufruf auch kein UB. Für einen &quot;non-POD class type&quot; wird der Aufruf einer nicht-statischen Funktion ja explizit als UB definiert (auch §3.8).</p>
<p>Aber helft mir mal kurz.</p>
<p>Wenn ich, wie der Threadstarter, einen mit 0 initialisierten Zeiger nehme und über diesen eine nicht-statische Funktion aufrufe die selbst keine illegalen Speicherzugriffe tätigt, wo sagt mir der Standard, dass das UB ist?</p>
<p>Von der Anschauung her würde ich sagen, dass das klappen müsste, schließlich ist es dem Funktionsaufruf selbst ja egal ob der übergebene this-Zeiger auf gültigen Speicher zeigt oder nicht, solange er nicht dereferenziert werden muss.</p>
<p>Ist die Funktion virtuell, dann ist Ende, das ist klar, aber was übersehe ich da bei einem normalen Funktionsaufruf bzw. wo ist die entsprechende Stelle im Standard?</p>
<p>Nicht dass ich irgendetwas in der Richtung implementiert habe, nur aus Interesse. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>P.S.:</p>
<p>hustbaer schrieb:</p>
<blockquote>
<p>Bzw. die noch bessere Frage ist eigentlich: ... formaljuristisch korrekter Ausdruck ...</p>
</blockquote>
<p>So hab ich's gemeint. :p <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709867</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709867</guid><dc:creator><![CDATA[Mitleid]]></dc:creator><pubDate>Wed, 13 May 2009 10:28:25 GMT</pubDate></item><item><title><![CDATA[Reply to Methodenaufrufe, ohne dass zuvor ein Obj angelegt wird. on Wed, 13 May 2009 11:50:55 GMT]]></title><description><![CDATA[<p>Gut, ich helfe dir mal. Ich habe mal &quot;kurz&quot; im Standard gelesen und bin dabei auf das hier gestosssen. Ich glaube das definiert das Problem <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>
<p>Standard ISO IEC 14882:2003 schrieb:</p>
<blockquote>
<p>5.2.5 Class member access</p>
<p><sup>1</sup> A postfix expression followed by a dot . or an arrow -&gt;, optionally followed by the keyword template<br />
(14.8.1), and then followed by an id-expression, is a postfix expression. The postfix expression before the<br />
dot or arrow is evaluated; the result of that evaluation, together with the id-expression, determine the<br />
result of the entire postfix expression.</p>
<p><sup>2</sup> For the first option (dot) the type of the first expression (the object expression) shall be “class object” (<strong>of a<br />
complete type</strong>). For the second option (arrow) the type of the first expression (the pointer expression) shall<br />
be “pointer to class object” (<strong>of a complete type</strong>). In these cases, the id-expression shall name a member of<br />
the class or of one of its base classes. [Note: because the name of a class is inserted in its class scope<br />
(clause 9), the name of a class is also considered a nested member of that class. ] [Note: 3.4.5 describes<br />
how names are looked up after the . and -&gt; operators. ]</p>
<p><sup>3</sup> <strong>If E1 has the type “pointer to class X,” then the expression E1-&gt;E2 is converted to the equivalent form<br />
(*(E1)).E2;</strong> the remainder of 5.2.5 will address only the first option (dot). Abbreviating object-<br />
expression.id-expression as E1.E2, then the type and lvalue properties of this expression are determined as<br />
follows. In the remainder of 5.2.5, cq represents either const or the absence of const; vq represents<br />
either volatile or the absence of volatile. cv represents an arbitrary set of cv-qualifiers, as defined<br />
in 3.9.3.</p>
</blockquote>
<p>Somit muss also das Objekt gültig sein und beim Zugriff über einen Zeiger wird dieser zuerst dereferenziert. Das dereferenzieren einer ungültigen Speicheradresse ist undefiniert.</p>
<p>Oder habe ich da einen Denkfehler gemacht? <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>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709913</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709913</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 13 May 2009 11:50:55 GMT</pubDate></item><item><title><![CDATA[Reply to Methodenaufrufe, ohne dass zuvor ein Obj angelegt wird. on Wed, 13 May 2009 18:34:18 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>Gut, ich helfe dir mal.</p>
</blockquote>
<p>Das ist aber nett. Vielen Dank. <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>
<p>Fazit: Besser gleich auf Tippgeber gehört, der da meinte es hat keinen Sinn darüber zu diskutieren und Recht hatte er. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1710122</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1710122</guid><dc:creator><![CDATA[Mitleid]]></dc:creator><pubDate>Wed, 13 May 2009 18:34:18 GMT</pubDate></item><item><title><![CDATA[Reply to Methodenaufrufe, ohne dass zuvor ein Obj angelegt wird. on Wed, 13 May 2009 20:54:41 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9752">@Dravere</a>:<br />
Die Stelle sagt IMO über das hier Diskutierte nichts aus.</p>
<p>Ich denke du misverstehst den Begriff &quot;complete type&quot;.<br />
Complete Type bedeutet dass ein Typ (Klasse) definiert ist, und nicht nur deklariert:</p>
<pre><code class="language-cpp">struct A;

// &lt;- A ist &quot;incomplete&quot; hier

struct A
{
   int i;
};

// &lt;- hier ist A jetzt ein &quot;complete type&quot;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1710173</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1710173</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 13 May 2009 20:54:41 GMT</pubDate></item><item><title><![CDATA[Reply to Methodenaufrufe, ohne dass zuvor ein Obj angelegt wird. on Wed, 13 May 2009 22:50:34 GMT]]></title><description><![CDATA[<p>Jap, hab grad nochmals nachgelesen, &quot;complete type&quot; bedeutet hier was anders. Aber was ist mit Abschnitt 3? Ein Aufruf der Form <code>p-&gt;methode()</code> wird umgewandelt zu <code>(*(p)).methode()</code> . Eine Dereferenzierung von <code>p</code> , wenn <code>p</code> auf 0 oder einem Speicherbereich zeigt, welcher einem nicht gehört, führ doch zu UB.<br />
Oder versteh ich das auch falsch? ...</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1710210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1710210</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 13 May 2009 22:50:34 GMT</pubDate></item><item><title><![CDATA[Reply to Methodenaufrufe, ohne dass zuvor ein Obj angelegt wird. on Thu, 14 May 2009 09:12:46 GMT]]></title><description><![CDATA[<p>Ihr habt doch hier zwei unterschiedliche Situationen. Eine, in der das Objekt gültig ist, und eine, in der das Objekt nicht gültig ist. Dabei dürfte doch völlig egal sein, ob das Objekt POD oder nicht POD ist. Nur, dass bei PODs das Objekt bereits gültig ist, sobald der Speicher reserviert wurde.</p>
<pre><code class="language-cpp">NonPodType* npt = 0;
npt-&gt;feld = 10; // UB
npt-&gt;methode(); // UB

PodType* pt = 0xdeadbeef;
pt-&gt;feld = 10; // UB
pt-&gt;methode(); // UB

NonPodType* npt2 = new NonPodType();
npt2-&gt;feld = 10; // ok
npt2-&gt;methode(); // ok

PodType* pt2 = (PodType*) malloc(sizeof(PodType)); // man verzeihe mir das C-gefrickel
pt2-&gt;feld = 10; // ok
pt2-&gt;methode(); // ok
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1710319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1710319</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 14 May 2009 09:12:46 GMT</pubDate></item><item><title><![CDATA[Reply to Methodenaufrufe, ohne dass zuvor ein Obj angelegt wird. on Thu, 14 May 2009 13:50:42 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10648">@LordJaxom</a>: richtig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1710510</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1710510</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 14 May 2009 13:50:42 GMT</pubDate></item><item><title><![CDATA[Reply to Methodenaufrufe, ohne dass zuvor ein Obj angelegt wird. on Thu, 14 May 2009 13:59:09 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>Ihr habt doch hier zwei unterschiedliche Situationen. Eine, in der das Objekt gültig ist, und eine, in der das Objekt nicht gültig ist. Dabei dürfte doch völlig egal sein, ob das Objekt POD oder nicht POD ist. Nur, dass bei PODs das Objekt bereits gültig ist, sobald der Speicher reserviert wurde.</p>
</blockquote>
<p>Ursprünglich gab es nur eine Situation und zwar wenn das Objekt noch nicht gültig sei. Mitleid hat in diesem Kontext dann auch nachgefragt, wie das bei PODs sei. Erst hustbaer hat da eine andere Situation reingebracht, welche etwas für Verwirrung sorgte <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 so wie du es zusammengefasst hast, sehe ich das auch.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1710513</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1710513</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Thu, 14 May 2009 13:59:09 GMT</pubDate></item><item><title><![CDATA[Reply to Methodenaufrufe, ohne dass zuvor ein Obj angelegt wird. on Thu, 14 May 2009 14:35:29 GMT]]></title><description><![CDATA[<p>Auch richtig. Die andere Situation hab' ich reingebracht, weil die ursprüngliche Frage für mich ziemlich klar war.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1710535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1710535</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 14 May 2009 14:35:29 GMT</pubDate></item></channel></rss>