<?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[referenzen-&amp;gt;eine kleine frage!]]></title><description><![CDATA[<p>ich hab zweimal die selbe funktion mit und ohne referenz, aber es wird immer zum schluss 0,1,2,3,4 ausgegeben.(ich dachte bei der fkt. ohne referenz wär das nicht der fall ): )<br />
nun weiß ich leider nicht mehr wozu referenzen da sind oder wie sie konkret funktionieren. an sich wird doch, durch eine referenz ein kopieren der übergebenen daten verhindert...<br />
könnte mir das einer genauer an einem bsp. erklären?</p>
<p>meine klasse &quot;array&quot; macht genau dass, was meine member ihr sagen <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>
<pre><code class="language-cpp">void fill(array&lt;int&gt; &amp;array, int grenze)
{
	for(int i = 0; i &lt; grenze; i++)
		array.push_back(i);
}

int main(int argc, char *argv[])
{	
	array&lt;int&gt; moave;
	moave.set_dim(5);
	fill(moave, 5);
	moave.ausgabe_array();

  return EXIT_SUCCESS;
}
</code></pre>
<pre><code class="language-cpp">void fill(array&lt;int&gt; array, int grenze)
{
	for(int i = 0; i &lt; grenze; i++)
		array.push_back(i);
}

int main(int argc, char *argv[])
{	
	array&lt;int&gt; moave;
	moave.set_dim(5);
	fill(moave, 5);
	moave.ausgabe_array();

  return EXIT_SUCCESS;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/118748/referenzen-gt-eine-kleine-frage</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 17:58:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/118748.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 23 Aug 2005 20:05:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to referenzen-&amp;gt;eine kleine frage! on Tue, 23 Aug 2005 20:05:14 GMT]]></title><description><![CDATA[<p>ich hab zweimal die selbe funktion mit und ohne referenz, aber es wird immer zum schluss 0,1,2,3,4 ausgegeben.(ich dachte bei der fkt. ohne referenz wär das nicht der fall ): )<br />
nun weiß ich leider nicht mehr wozu referenzen da sind oder wie sie konkret funktionieren. an sich wird doch, durch eine referenz ein kopieren der übergebenen daten verhindert...<br />
könnte mir das einer genauer an einem bsp. erklären?</p>
<p>meine klasse &quot;array&quot; macht genau dass, was meine member ihr sagen <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>
<pre><code class="language-cpp">void fill(array&lt;int&gt; &amp;array, int grenze)
{
	for(int i = 0; i &lt; grenze; i++)
		array.push_back(i);
}

int main(int argc, char *argv[])
{	
	array&lt;int&gt; moave;
	moave.set_dim(5);
	fill(moave, 5);
	moave.ausgabe_array();

  return EXIT_SUCCESS;
}
</code></pre>
<pre><code class="language-cpp">void fill(array&lt;int&gt; array, int grenze)
{
	for(int i = 0; i &lt; grenze; i++)
		array.push_back(i);
}

int main(int argc, char *argv[])
{	
	array&lt;int&gt; moave;
	moave.set_dim(5);
	fill(moave, 5);
	moave.ausgabe_array();

  return EXIT_SUCCESS;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/857183</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/857183</guid><dc:creator><![CDATA[exigoner]]></dc:creator><pubDate>Tue, 23 Aug 2005 20:05:14 GMT</pubDate></item><item><title><![CDATA[Reply to referenzen-&amp;gt;eine kleine frage! on Tue, 23 Aug 2005 20:10:03 GMT]]></title><description><![CDATA[<p>wie ist array denn aufgebaut?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/857191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/857191</guid><dc:creator><![CDATA[frosty]]></dc:creator><pubDate>Tue, 23 Aug 2005 20:10:03 GMT</pubDate></item><item><title><![CDATA[Reply to referenzen-&amp;gt;eine kleine frage! on Tue, 23 Aug 2005 22:03:04 GMT]]></title><description><![CDATA[<p>Ich tippe mal drauf dass du den Copy-C'tor nicht richtig überladen hast und dass das neue Array einen internen Zeiger hat der einfach vom alten kopiert ist. Teste doch mal das hier:</p>
<pre><code class="language-cpp">array&lt;int&gt; a, b(a);
a.push_back(1);
cout &lt;&lt; b.size();
</code></pre>
<p>Wird da 1 oder 0 ausgegeben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/857229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/857229</guid><dc:creator><![CDATA[FireFlow]]></dc:creator><pubDate>Tue, 23 Aug 2005 22:03:04 GMT</pubDate></item><item><title><![CDATA[Reply to referenzen-&amp;gt;eine kleine frage! on Wed, 24 Aug 2005 10:11:41 GMT]]></title><description><![CDATA[<p>also ich habe nicht die stl verwendet, ich hab selbst ne kleine klasse gemacht, darum habe ich noch kein &quot;size()&quot; aber meine ausgabefunktion gibt nichts aus, was darauf hindeutet, dass bei deiner variante eine &quot;0&quot; als ergebnis zurückgeliefert werden müsste!</p>
<p>auf die gefahr hin dass, das ich jetzt ein bissel noob wirkt, ich wusste gar nicht das ein b(a) bei einem objekt so einfach funktioniert, ich hab das zwar immer bei inline funktionen (bei meinen klassen) für wertzuweisungen meiner privaten variablen gemacht, ABER hier noch nie. wird das objekt einfach kopiert, oder was wird da im speziellen gemacht???</p>
<p>jetzt aber noch zu der referenz, ich denke das der fakt das mein objekt &quot;b&quot; leer ist darauf hindeutet, mmh, sag du es mir bitte <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>
<p>was müsste denn deiner meinung nach da rauskommen, wenn ich diesen code benutze:</p>
<pre><code class="language-cpp">void fill(array&lt;int&gt; array, int grenze)
{
    for(int i = 0; i &lt; grenze; i++)
        array.push_back(i);
}

int main(int argc, char *argv[])
{   
    array&lt;int&gt; moave;
    moave.set_dim(5);
    fill(moave, 5);
    moave.ausgabe_array();

  return EXIT_SUCCESS;
}
</code></pre>
<p>ganz einfach OHNE referenz, dürfte da normalerweise was ausgegeben werden oder nicht???</p>
<p>so und jetzt noch als kleine dreingabe meine klasse. eigentlich wollte ich das ding nicht posten</p>
<blockquote>
<p>meine klasse &quot;array&quot; macht genau dass, was meine member ihr sagen <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>
</blockquote>
<p>aber, dann doch, obwohl sich dass hier eh keiner durchliest, und der versuch sowieso sinnlos ist! aber wenn FROSTY es so will.... :p</p>
<pre><code class="language-cpp">#ifndef ARRAY_KLASSE
#define ARRAY_KLASSE

#include &lt;iostream&gt;
#include &lt;cstdlib&gt;

template &lt;class T&gt;
class array
{
    private:
	T *array_eindim;

	unsigned int zeilen_array;
	unsigned int index_z;

    public:
	array();
	array(unsigned int z);
	~array();

	T *get_array();
	T get_element(unsigned int zeile);

	void ausgabe_array();
	void set_dim(unsigned int z);

	void push_back(T data);//zu machen
	void push_back(T *feld, unsigned int zeilen_feld);
	void push_pos(T *feld, unsigned int zeilen_feld, int pos_z);

	T mult(T *feld, unsigned int zeilen_feld);

	void clear_all();
};

//##############################################################################

template &lt;class T&gt;
inline array&lt;T&gt;::array() 
: index_z(0), zeilen_array(0) {}

template &lt;class T&gt;
inline array&lt;T&gt;::array(unsigned int zeilen) 
: index_z(0), zeilen_array(zeilen)
{
	array_eindim = new T[zeilen];
}

template &lt;class T&gt;
array&lt;T&gt;::~array()
{
	delete [] array_eindim;
}

template &lt;class T&gt;
T *array&lt;T&gt;::get_array()
{
	return array_eindim;
}

template &lt;class T&gt;
T array&lt;T&gt;::get_element(unsigned int z)
{
	if(z &lt; zeilen_array)
		return array_eindim[z];
}

template &lt;class T&gt;
void array&lt;T&gt;::set_dim(unsigned int zeilen)
{
	array_eindim = new T[zeilen];
	zeilen_array = zeilen;
	index_z = 0;
}

template &lt;class T&gt;
void array&lt;T&gt;::ausgabe_array()
{
	for(unsigned int i = 0; i &lt; zeilen_array; i++)
		std::cout &lt;&lt; &quot;Position &quot; &lt;&lt; i &lt;&lt; &quot;: &quot; &lt;&lt; array_eindim[i] &lt;&lt; std::endl;
    if(zeilen_array == 0)
        std::cout &lt;&lt; &quot;Array leer!&quot; &lt;&lt; std::endl;
}

template &lt;class T&gt;
void array&lt;T&gt;::push_back(T data)
{
	array_eindim[index_z] = data;
	index_z++;
}

template &lt;class T&gt;
void array&lt;T&gt;::push_back(T *feld, unsigned int feld_zeilen)
{
	for(unsigned int i = 0; i &lt; feld_zeilen; ++i &amp;&amp; ++index_z)
		array_eindim[index_z] = feld[i];
}

template &lt;class T&gt;
void array&lt;T&gt;::push_pos(T *feld, unsigned int feld_zeilen, int position_zeile)
{
	for(unsigned int i = position_zeile, j = 0; i &lt; (feld_zeilen + position_zeile); i++, j++)
		array_eindim[i] = feld[j];

	if( (feld_zeilen + position_zeile) &gt; index_z)
		index_z = (feld_zeilen + position_zeile);
}

template &lt;class T&gt;
T array&lt;T&gt;::mult(T *feld, unsigned int zeilen_feld)
{
	T temp;
	for(unsigned int i = 0; i &lt; zeilen_array &amp;&amp; i &lt; zeilen_feld; i++)
		temp = array_eindim[i] * feld[i];
	return temp;
}

template &lt;class T&gt;
void array&lt;T&gt;::clear_all()
{
	for(unsigned int i = zeilen_array; i &lt; zeilen_array; i++)
		array_eindim[i] = 0;

	index_z = 0;
}
#endif
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/857420</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/857420</guid><dc:creator><![CDATA[exigoner]]></dc:creator><pubDate>Wed, 24 Aug 2005 10:11:41 GMT</pubDate></item><item><title><![CDATA[Reply to referenzen-&amp;gt;eine kleine frage! on Wed, 24 Aug 2005 10:24:59 GMT]]></title><description><![CDATA[<p>Das ist sehr leicht zu erklären:</p>
<p>Ich bekomm Unmengen Access Vilations an Kopf wenn ich das teste. Wenn du das Objekt per Value übergibts ruft der Compiler den Copy-C'tor auf. Da du keinen Copy-C'tor hast baut sich der Compiler selber einen in dem er jedes Attribut kopiert. Das führt dazu dass 2 Arrayklassen auf den selben Speicher zugreifen. Du musst das so machen:</p>
<pre><code class="language-cpp">template &lt;class T&gt;
array&lt;T&gt;::array(array&lt;T&gt; const&amp; ref)
: index_z(0), zeilen_array(zeilen)
{
    zeilen = ref.zeilen
    index_z = ref.index_z;
    array_eindim = new T[zeilen];
    for(int i=0; i&lt;zeilen; ++i)
        array_eindim[i] = ref.array_eindim[i];
}
</code></pre>
<p>Dann hasst du noch in der Methode set_dim() vergessen den alten Speicher freizugeben!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/857427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/857427</guid><dc:creator><![CDATA[FireFlow]]></dc:creator><pubDate>Wed, 24 Aug 2005 10:24:59 GMT</pubDate></item><item><title><![CDATA[Reply to referenzen-&amp;gt;eine kleine frage! on Wed, 24 Aug 2005 10:44:28 GMT]]></title><description><![CDATA[<p>ach, danke! hats also, was gebracht das zu posten. ABER was ist nun mit der referenz <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/857430</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/857430</guid><dc:creator><![CDATA[exigoner]]></dc:creator><pubDate>Wed, 24 Aug 2005 10:44:28 GMT</pubDate></item><item><title><![CDATA[Reply to referenzen-&amp;gt;eine kleine frage! on Wed, 24 Aug 2005 11:05:47 GMT]]></title><description><![CDATA[<p>Wenn du es mit korrektem Copy-C'tor ausprobierst wirst du bemerken dass nur bei der Übergabe per Referenz nacher im Array Werte sind. Bei der Übergabe per Value wird ein neues lokales Objekt in der Funktion erzeugt das am Ende der Funktion wieder zerstört wird. Das neue Objekt wird erstellt indem der Copy-C'tor aufgerufen wird. Bei einer Referenz wird kein neues Objekt erstellt sondern du greifst auf dsa alte zu.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/857445</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/857445</guid><dc:creator><![CDATA[FireFlow]]></dc:creator><pubDate>Wed, 24 Aug 2005 11:05:47 GMT</pubDate></item><item><title><![CDATA[Reply to referenzen-&amp;gt;eine kleine frage! on Wed, 24 Aug 2005 11:40:11 GMT]]></title><description><![CDATA[<p>super <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/857472</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/857472</guid><dc:creator><![CDATA[exigoner]]></dc:creator><pubDate>Wed, 24 Aug 2005 11:40:11 GMT</pubDate></item><item><title><![CDATA[Reply to referenzen-&amp;gt;eine kleine frage! on Wed, 24 Aug 2005 18:57:04 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich versuch es mal mit der Referenz.</p>
<ol>
<li>An eine Funktion wird meist eine Kopie der Werte übergeben:<br />
f1 ( int k) { k = 2*k; }<br />
Aufruf: m = 5; f1 ( m )<br />
In der Funktion wird k zwar verdoppelt, aber nur dort. Das hat keinen Einfluss auf das Original m.</li>
<li>An eine Funktion wird die Adresse übergeben: f2 (int &amp; n) { n = 2*n;}<br />
Aufruf: p = 4; f2(p);<br />
Wegen der Adressübergabe wird p verändert: p == 8!<br />
Referenz ist kein Pointer, der auch Adressen übergibt.</li>
</ol>
]]></description><link>https://www.c-plusplus.net/forum/post/857798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/857798</guid><dc:creator><![CDATA[jerry]]></dc:creator><pubDate>Wed, 24 Aug 2005 18:57:04 GMT</pubDate></item></channel></rss>