<?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[Statisches lokales Objekt]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hätte mal eine grundsätzliche Frage zu folgendem kleinen (lauffähigem) Programm.</p>
<p>file.hpp:</p>
<pre><code class="language-cpp">class myClass {
public:
	static myClass&amp; instance() {
		static myClass obj;
		return obj;
	}

	void myFunc(void);

	int var;
};
</code></pre>
<p>file.cpp:</p>
<pre><code class="language-cpp">#include &quot;file.hpp&quot;

void myClass::myFunc(void) {	
	var = 5678;
}

void func(void) {
	myClass::instance().var = 1234;
}

void main(void) {
	myClass i = myClass::instance();
	i.myFunc();
	func();
	int res = i.var; // res = 5678
}
</code></pre>
<p>Kann mir jemand erklären, warum die Zuweisung in <strong>func()</strong> keine Auswirkung hat? Also warum <strong>res=5678</strong> und nicht <strong>res=1234</strong> ist.<br />
Schließlich sollte das statische lokale Objekt <strong>obj</strong> ja einmal am Anfang initialisiert werden und dann über mehrere Aufrufe bestehen bleiben, oder?</p>
<p>Ist wahrscheinlich eine absolut triviale Geschichte, ab ich raffe das irgendwie nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Danke!!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/294010/statisches-lokales-objekt</link><generator>RSS for Node</generator><lastBuildDate>Sun, 16 Aug 2026 02:01:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/294010.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 15 Oct 2011 20:05:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Statisches lokales Objekt on Sat, 15 Oct 2011 20:05:39 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hätte mal eine grundsätzliche Frage zu folgendem kleinen (lauffähigem) Programm.</p>
<p>file.hpp:</p>
<pre><code class="language-cpp">class myClass {
public:
	static myClass&amp; instance() {
		static myClass obj;
		return obj;
	}

	void myFunc(void);

	int var;
};
</code></pre>
<p>file.cpp:</p>
<pre><code class="language-cpp">#include &quot;file.hpp&quot;

void myClass::myFunc(void) {	
	var = 5678;
}

void func(void) {
	myClass::instance().var = 1234;
}

void main(void) {
	myClass i = myClass::instance();
	i.myFunc();
	func();
	int res = i.var; // res = 5678
}
</code></pre>
<p>Kann mir jemand erklären, warum die Zuweisung in <strong>func()</strong> keine Auswirkung hat? Also warum <strong>res=5678</strong> und nicht <strong>res=1234</strong> ist.<br />
Schließlich sollte das statische lokale Objekt <strong>obj</strong> ja einmal am Anfang initialisiert werden und dann über mehrere Aufrufe bestehen bleiben, oder?</p>
<p>Ist wahrscheinlich eine absolut triviale Geschichte, ab ich raffe das irgendwie nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Danke!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2131876</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2131876</guid><dc:creator><![CDATA[new_to_c++]]></dc:creator><pubDate>Sat, 15 Oct 2011 20:05:39 GMT</pubDate></item><item><title><![CDATA[Reply to Statisches lokales Objekt on Sat, 15 Oct 2011 20:13:49 GMT]]></title><description><![CDATA[<p>Weil <code>myClass i = ...</code> eine Kopie erzeugt, und diese Kopie ne eigene &quot;var&quot; Variable hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2131879</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2131879</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 15 Oct 2011 20:13:49 GMT</pubDate></item><item><title><![CDATA[Reply to Statisches lokales Objekt on Sat, 15 Oct 2011 20:27:50 GMT]]></title><description><![CDATA[<p>Danke für die schnelle Antwort <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>Gibt es denn auch eine Möglichkeit wie ich <strong>myClass::instance().var</strong> verkürzen kann?</p>
<p>Hatte die Zuweisung <strong>myClass i = myClass::instance()</strong> nämlich eigentlich deswegen durchgeführt, damit ich den Zugriff auf <strong>var</strong> mittels <strong>i.var</strong> abkürzen kann <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>Ziemlich lächerlich, ich weiß <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/2131891</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2131891</guid><dc:creator><![CDATA[new_to_c++]]></dc:creator><pubDate>Sat, 15 Oct 2011 20:27:50 GMT</pubDate></item><item><title><![CDATA[Reply to Statisches lokales Objekt on Sat, 15 Oct 2011 20:52:11 GMT]]></title><description><![CDATA[<p>Dafür verwendet man Referenzen, also <code>myClass&amp; i = myClass::instance();</code> (das &amp; dort sagt dir, daß i keine neue Variable ist, sondern nur ein Verweis auf deine bestehende Instanz).</p>
<p>(PS: Zu einem ordentlichen Singleton gehört aber zumindest, die Kopier-Operationen zu verbieten <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="😉"
    /> Dann hindert dich schon der Compiler an solchen Aktionen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2131902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2131902</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 15 Oct 2011 20:52:11 GMT</pubDate></item><item><title><![CDATA[Reply to Statisches lokales Objekt on Sat, 15 Oct 2011 21:02:12 GMT]]></title><description><![CDATA[<p>Danke an euch beide! Ihr habt mir echt den Abend gerettet <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/2131906</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2131906</guid><dc:creator><![CDATA[new_to_c++]]></dc:creator><pubDate>Sat, 15 Oct 2011 21:02:12 GMT</pubDate></item></channel></rss>