<?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[Definition von Referenz auf Objekt bitweise Adresskopie???]]></title><description><![CDATA[<p>Hallo,<br />
lerne grade C++ mithilfe eines Buchs.<br />
In dem Buch kommt folgendes Beispiel vor:<br />
T O ;<br />
T&amp; rO = O; // laut Buch wird hier der Zuweisungsoperator von T aufgerufen .<br />
Jetzt bin ich verwirrt.............<br />
Wird bei Definition einer Referenz mit einem Objekt nicht einfach dessen Adresse bitweise kopiert,ähnlich einem speziellen konstanten Zeigern auf denen man komfortabler arbeiten kann ???<br />
Hätte auch gedacht , dass call by reference Übergabe an Funktionen sonst irgendwie ja quatsch wär ,wenn mehr kopiert würde als die Adresse<br />
Danke im Vorraus für die Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/245219/definition-von-referenz-auf-objekt-bitweise-adresskopie</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 07:43:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/245219.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 11 Jul 2009 06:34:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Definition von Referenz auf Objekt bitweise Adresskopie??? on Sat, 11 Jul 2009 06:34:15 GMT]]></title><description><![CDATA[<p>Hallo,<br />
lerne grade C++ mithilfe eines Buchs.<br />
In dem Buch kommt folgendes Beispiel vor:<br />
T O ;<br />
T&amp; rO = O; // laut Buch wird hier der Zuweisungsoperator von T aufgerufen .<br />
Jetzt bin ich verwirrt.............<br />
Wird bei Definition einer Referenz mit einem Objekt nicht einfach dessen Adresse bitweise kopiert,ähnlich einem speziellen konstanten Zeigern auf denen man komfortabler arbeiten kann ???<br />
Hätte auch gedacht , dass call by reference Übergabe an Funktionen sonst irgendwie ja quatsch wär ,wenn mehr kopiert würde als die Adresse<br />
Danke im Vorraus für die Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1740797</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1740797</guid><dc:creator><![CDATA[Toman]]></dc:creator><pubDate>Sat, 11 Jul 2009 06:34:15 GMT</pubDate></item><item><title><![CDATA[Reply to Definition von Referenz auf Objekt bitweise Adresskopie??? on Sat, 11 Jul 2009 06:55:56 GMT]]></title><description><![CDATA[<p>Toman schrieb:</p>
<blockquote>
<p>T&amp; rO = O; // laut Buch wird hier der Zuweisungsoperator von T aufgerufen .</p>
</blockquote>
<p>Das ist Blödsinn.</p>
<p>Selbst wenn rO keine Referenz wäre, würde hier nicht der Zuweisungsoperator aufgerufen. Vermutlich ist das Buch nicht so gut. Welches ist es denn?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1740801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1740801</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Sat, 11 Jul 2009 06:55:56 GMT</pubDate></item><item><title><![CDATA[Reply to Definition von Referenz auf Objekt bitweise Adresskopie??? on Sat, 11 Jul 2009 06:58:31 GMT]]></title><description><![CDATA[<p>Toman schrieb:</p>
<blockquote>
<p>Hallo,<br />
lerne grade C++ mithilfe eines Buchs.<br />
In dem Buch kommt folgendes Beispiel vor:<br />
T O ;<br />
T&amp; rO = O; // laut Buch wird hier der Zuweisungsoperator von T aufgerufen .<br />
Jetzt bin ich verwirrt.............</p>
</blockquote>
<p>Wenn das so im Buch steht, scheint es ein schlechtes Buch zu sein, da die Aussage falsch ist.</p>
<p>Toman schrieb:</p>
<blockquote>
<p>Wird bei Definition einer Referenz mit einem Objekt nicht einfach dessen Adresse bitweise kopiert,ähnlich einem speziellen konstanten Zeigern auf denen man komfortabler arbeiten kann ???</p>
</blockquote>
<p>Richtig.</p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1740802</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1740802</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Sat, 11 Jul 2009 06:58:31 GMT</pubDate></item><item><title><![CDATA[Reply to Definition von Referenz auf Objekt bitweise Adresskopie??? on Sat, 11 Jul 2009 09:46:28 GMT]]></title><description><![CDATA[<p>Sebastian Pizer schrieb:</p>
<blockquote>
<p>Toman schrieb:</p>
<blockquote>
<p>Wird bei Definition einer Referenz mit einem Objekt nicht einfach dessen Adresse bitweise kopiert,ähnlich einem speziellen konstanten Zeigern auf denen man komfortabler arbeiten kann ???</p>
</blockquote>
<p>Richtig.</p>
</blockquote>
<p>Nicht unbedingt richtig, weil im Standard nicht definiert ist wie der Compiler Referenzen zu implementieren hat. Wird aber in den meisten Fällen wohl so gemacht (mir ist zumindest kein Fall bekannt wo es anders ist).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1740849</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1740849</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sat, 11 Jul 2009 09:46:28 GMT</pubDate></item><item><title><![CDATA[Reply to Definition von Referenz auf Objekt bitweise Adresskopie??? on Sat, 11 Jul 2009 18:34:31 GMT]]></title><description><![CDATA[<p>Habe das Beispiel leicht abgewandelt , aber dachte aber das spielt für meine Frage keine große Rolle, aber vielleicht irre ich mich ja.<br />
Das genau Beispiel ist in &quot;C++ Einführung und professionelle Programmierung 9.Auflage ,Hanser-Verlag&quot; auf Seite 335 im Kapitel &quot;Zuweisungsoperator und Vererbung&quot; zu finden. Da steht konkret :<br />
----------------------------------------------------------------------------<br />
..................Wie sieht es aus, wenn polymorphe Objekte einander zugewiesen werden sollen? Anhand der Klasse Ober und der abgeleiteten Klasse Unter soll das Problem verdeutlicht werden:</p>
<p>//Klassendefinition<br />
class Ober{<br />
public:<br />
//...<br />
private:<br />
int iO; //Daten der Klasse Ober<br />
};</p>
<p>class Unter : public Ober{<br />
public:<br />
//...<br />
private:<br />
int iU; //Daten der Klasse Unter<br />
};</p>
<p>//main() Programm:<br />
Unter U1,U2;<br />
U1=U2; //kein Problem: Unter::operator=(const Unter&amp;)</p>
<p>//polymorphe Objekte(statischer != dynamischer Typ)<br />
Ober&amp; rO1 = U1;<br />
Ober&amp; rO2 = U2;</p>
<p>Falls der Zuweisungsoperator nicht virtuell ist, werden nur die statischen Typen betrachtet:</p>
<p>Ober O1;<br />
Ober O2;<br />
O1 = O2; // Ober::operator=(const Ober&amp;) ok</p>
<p>Aus der Zuweisung</p>
<p>rO1 = U2; //Ober::operator=(const Unter&amp;) ?</p>
<p>versucht der Compiler einen Zuweisungsoperator zu finden den es nicht gibt.<br />
Das Ergebnis ist ein Fehlermeldung des Compilers................<br />
------------------------------------------------------------------------------<br />
Das mit der Subtyp-Polymorphie und der Virtualität zur eventuellen dyn. Bindung<br />
von Operator-/Funktionsaufrufen ist mir klar,kenn ich aus anderen Sprachen(in Java wird ja jede Funktion per default dynamisch gebunden,wenn man das nicht durch Modifier verhindert) ,ABER...um auf das Besipiel zurück zu kommen :<br />
Zunächst mal ist doch Ober&amp; rO1 = U1 schon definiert , dachte auch , dass man das referenzierte Objekt dann nicht mehr ändern kann? OK, aber darüber hinweg sehend dann eben diese vermeindliche Zuweisung rO1 = U2 bei der dann angeblich der Zuweisungsoperator aufgerufen wird...???</p>
<p>Dachte hald der Zuweisungsoperator eines Objekts wird nur aufgerufen um dann in der Funktion (eine Teilmenge bei Subtyp)der Member des zu kopierenden Objekts in die eigenen davon existierenden Member zu kopieren also z.B. bei O1=O2 ,aber dass rO1 = U2 irgendwas mit dem in der Klasse definierten(oder dem default) Zuweisungsoperator zu tun haben soll kapier ich nicht.</p>
<p>Jetzt nach der genauen Angabe des Bespiels : Bleiben eure bisherigen Statements<br />
zu rO1 = U2 bestehen oder ändert sich dadurch was ? Dachte jedenfalls hier<br />
würde eine Referenz angelegt,also eine Adresse kopiert und nicht der Zuweisungsoperator aufgerufen........</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/2803">@MFK</a> : wenn es keine Definition einer Referenz wär sondern die Def eines Objekts<br />
bei gleichzeiteiger &quot;Zuweisung&quot; eines (nicht temporären) Objekts würde<br />
der CopyKonstruktor des neu zu def. Objekts aufgerufen...Ist es das was<br />
du damit sagen wolltest ,oder weiß ich schon wieder was nicht ?</p>
<p>Danke für eure Hilfe überigens und liebe Grüße <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/1741063</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1741063</guid><dc:creator><![CDATA[Toman]]></dc:creator><pubDate>Sat, 11 Jul 2009 18:34:31 GMT</pubDate></item><item><title><![CDATA[Reply to Definition von Referenz auf Objekt bitweise Adresskopie??? on Sat, 11 Jul 2009 17:33:23 GMT]]></title><description><![CDATA[<p>Da stimmt aber irgend etwas nicht. <code>Unter</code> soll bestimmt von <code>Ober</code> ableiten, oder? Sonst würde die Initialisierung von <code>rO1</code> und <code>rO2</code> nicht funktionieren. Was verschweigst Du uns denn mit den &quot;...&quot;-Punkten? Sind da noch virtuelle Zuweisungsoperatoren?</p>
<p>So ein kompliziertes Beispiel brauchst Du auch erst gar nicht betrachten, wenn Du Referenzen noch nicht 100%ig verstanden hast. Probier es erstmal hiermit:</p>
<pre><code class="language-cpp">int main() {
    int i = 1;
    int j = 3;
    int&amp; k = i;
    k = j;
    i = 23;
    j = 42;
    cout &lt;&lt; k &lt;&lt; '\n';  
  }
</code></pre>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1741071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1741071</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Sat, 11 Jul 2009 17:33:23 GMT</pubDate></item><item><title><![CDATA[Reply to Definition von Referenz auf Objekt bitweise Adresskopie??? on Sat, 11 Jul 2009 18:26:30 GMT]]></title><description><![CDATA[<p>Und verwende in Zukunft bitte [cpp]-Tags (erste weisse Schaltfläche unter den Smileys). Dann sieht der Code gleich viel schöner aus... <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1741109</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1741109</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 11 Jul 2009 18:26:30 GMT</pubDate></item><item><title><![CDATA[Reply to Definition von Referenz auf Objekt bitweise Adresskopie??? on Sat, 11 Jul 2009 19:22:35 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/36159">@Sebastian</a> Pizer :<br />
Alles zwischen den ----- Linien ist 1:1 aus dem Buch übernommen.<br />
Klar erbt Unter von Ober , hatte ich beim abtippen vergessen.<br />
Mit Referenzen und Zeigern hab ich denk ich keine Probleme ,hab im 1.Semster Pascal und ein wenig C gelernt (da gibts zwar keine Referenzen , aber Zeiger.......)und dann ewig lange nur irgenwelche dynamischen Container implementiert.....und wie gesagt hab ich auch schon Erfahrung mit OOP in Java(2.Semster)...ist zwar schon etwas her, aber programmier seitdem hobbymäßig weiter und lern halt jetzt C++ für mich . Bin hald nur vorsichtig und stell mich lieber etwas dümmer,vielleicht weis ja noch jemand was was ich nicht weis was den Kontext mit diesem komischen Beispiel angeht ,das mich wie gesagt etwas verwirrt ...Habe dieses aber 1:1 kopiert und jetztauch mehrmals kontrolliert , das steht genau so im Buch mit allen Pünktchen und allen Kommentaren und allen Auslassungen.......<br />
Für alle dies nicht glauben wollen hier noch ein link zu einer Leseprobe:<br />
<a href="http://www.edv-buchversand.de/embarcadero/?cat0=750000941&amp;idx0=19&amp;cnt=product&amp;id=ha-41023" rel="nofollow">www.edv-buchversand.de/embarcadero/?cat0=750000941&amp;idx0=19&amp;cnt=product&amp;id=ha-41023</a><br />
Die Pdf unter Leseprobe runterladen und nach &quot;Zuweisungsoperator und Vererbung&quot; suchen......Mein Auszug steht ganz am Anfang des Kapitels.....<br />
Mir geht es überigens auch nicht darum was dieses Beipiel primär versucht zu erklären , denke das ist mir klar , sondern nur um eventuelle Detailfehler , welche es schwierig machen das Besipiel im Detail nachvollziehen zu können.....und dann könnt ich ja alles falsch verstanden haben, wenn es sich hier nicht um Fehler handelt........Wie gesagt können mich veremintliche FEhler noch verwirren, da ich dachte ich hab alles kapiert,aber noch nicht lang genug C++ lerne um mich nicht durch evtl. Falsches verunsichern zu lassen...........<br />
Aber vielleicht kann Das ja jetzt mit der Leseprobe jemand nachvollziehen .<br />
Danke jedenfalls für die bisherige Hilfe <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/1741129</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1741129</guid><dc:creator><![CDATA[Toman]]></dc:creator><pubDate>Sat, 11 Jul 2009 19:22:35 GMT</pubDate></item><item><title><![CDATA[Reply to Definition von Referenz auf Objekt bitweise Adresskopie??? on Sat, 11 Jul 2009 20:23:41 GMT]]></title><description><![CDATA[<p>Tatsächlich. Da steht wirklich, dass</p>
<pre><code class="language-cpp">rO1 = U2;
</code></pre>
<p>eine Fehlermeldung des Compilers provoziert. So ein Käse.</p>
<p>Was dort NICHT steht, ist das, was Du im ersten Beitrag geschrieben hast. Es sieht so aus, als ob Du Zuweisung mit Initialisierung von Referenzen durcheinander bringst. Folgend ein Vergleich mit Zeigern. Beide Seiten machen in etwa das gleiche:</p>
<pre><code class="language-cpp">// Zeiger            Referenz

   T* pO = &amp;O;       T&amp; rO = O;
   *pO = X;          rO = X;
   pO = &amp;Z;          Es gibt kein Äquivalent
</code></pre>
<p>Man kann sich eine Referenz wie einen Zeiger vorstellen. Der Unterschied: Beim Initialisieren braucht man nicht den Adress-Operator (&amp;) und die <strong>Dereferenzierung ist danach implizit</strong>. Deswegen kann man auch die Referenz auch nicht mehr verändern. In beiden Versionen würde nur die zweite Zeile den Zuweisungsoperator der Klasse aufrufen. Die erste Zeile ist jeweils eine Initialisierung. Von einer Zuweisung spricht man nur dann, wenn es das Objekt schon gibt. Die folgenden zwei Zeilen sind auch Initialisierungen</p>
<pre><code class="language-cpp">string s = &quot;hello&quot;;
   string t = s;
</code></pre>
<p>Hier wird nirgens string::operator= aufgerufen -- höchstens der Kopier-Konstruktor.</p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1741164</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1741164</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Sat, 11 Jul 2009 20:23:41 GMT</pubDate></item><item><title><![CDATA[Reply to Definition von Referenz auf Objekt bitweise Adresskopie??? on Sun, 12 Jul 2009 17:03:14 GMT]]></title><description><![CDATA[<p>Also, irgendwie versuche ich jetzt schon die ganze Zeit festzustellen, wie der Breymann das gemeint haben könnte bzw. ob ein Tippfehler die Ursache sein könnte.</p>
<p>Ist aber wohl ein riesiger Bock den er da geschossen hat. Und das in der 9. Auflage des Buches und in dem als Leseprobe veröffentlichen Kapitel. Katastrophe! <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>Habe zwar bisher nur Gutes über das Buch gehört, aber das hier verleitet mich doch dazu es nicht mehr als Empfehlung aufzuzählen. Was soll's, der Primer ist sowieso besser. <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/1741586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1741586</guid><dc:creator><![CDATA[Mitleid]]></dc:creator><pubDate>Sun, 12 Jul 2009 17:03:14 GMT</pubDate></item><item><title><![CDATA[Reply to Definition von Referenz auf Objekt bitweise Adresskopie??? on Thu, 23 Jul 2009 16:15:51 GMT]]></title><description><![CDATA[<p>Ne stimmt , da hab ich außerdem noch Zuweisung und Init. durcheinander gebracht .......war n kleiner Denkfehler............Also..hab das jetzt so verstanden:<br />
Eine Referenz ist sowas wie ein konstanter Zeiger und wird genau einmal mit einem Objekt initialisiert ;Hatt sowas wie nen dualen Character;Auf der einen Seite eigentlich ein Zeiger,auf der anderen Seite findet jede Operation ohne explizite Dereferenzierung auf dem referenzierten Objekt statt....also insbesondere auch Funktions(=Operator)aufrufe....demnach findet<br />
bei rO1 = U2 tatsächlich ne Zuweisung statt ,die zum Aufruf des =Operators der Klasse Ober führt...<br />
Hab ich das jetzt soweit richtig verstanden???<br />
Sooo.....und jetzt nochmal zu den Fehlern im Buch die tatsächlich da sind :<br />
Definitiv ist das mit der angeblichen Fehlermeldung ein Fehler oder ???<br />
Aber jetzt mal zur eigentlichen Bedeutung des Beispiels/Buchkapitels: Kann bisher nur nachvollziehen das es wohl irgendwie darum geht dass das einander zuweisen polymorpher Objekte (einer Vererbungshirarchie) richtig funktionieren soll...<br />
Kenne nur Subtyping wie es unter Java fubnktioniert,dort muss man sich ja gar ned um sowas kümmern....meine Frage jetzt : Muss ich jedes mal um Subtyping auf den Objekten selbst anzuwenden(um mir z.B. irgendwelche Fallunterscheidungen für Meth-Aufrufe zu sparen) irgendwelche Zuweisungsoperatoren überschreiben ? Wäre Subtyping-Nachbildung direkt über Zeiger(=Adressen) dann nicht irgendwie einfacher , so dass halt einfach SubtypAdressen da gelten wo BasistypAdressen gelten , aber bei irgendwelchen Zuweisungen dann nichts verloren gehen kann ?<br />
Blicke glaub ich da nicht ganz durch....<br />
Jedenfalls schon mal danke für die bisherige Hilfe <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/1748378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1748378</guid><dc:creator><![CDATA[Toman]]></dc:creator><pubDate>Thu, 23 Jul 2009 16:15:51 GMT</pubDate></item></channel></rss>