<?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[member functions]]></title><description><![CDATA[<p>hey,</p>
<pre><code class="language-cpp">class Sales_item {
public:
    // operations on Sales_item objects
    double avg_price() const;
    bool same_isbn(const Sales_item &amp;rhs) const
        { return isbn == rhs.isbn; }

private:
    std::string isbn;
    unsigned units_sold;
    double revenue;
};
</code></pre>
<p>ich habe mir jetzt das kapitel 2x durchgelesen und ich bin immernoch nicht schlauer geworden. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title="=("
      alt="😞"
    /></p>
<p>frage 1:<br />
public privat was genau bedeutet das ?</p>
<p>kann ich mir privat wie eine forschleife vorstellen zB for (int i =0; i!=2; ++i)<br />
wo man außerhalb der schleife keinen zugriff auf i hat ?</p>
<p>frage 2:</p>
<pre><code class="language-cpp">double avg_price() const;
</code></pre>
<p>hat doch keine aufgabe oder ? dieser code gibt wohl kaum der average price aus. wofür ist er gut ?</p>
<p>frage 3 :</p>
<pre><code class="language-cpp">bool same_isbn(const Sales_item &amp;rhs) const
        { return isbn == rhs.isbn; }
</code></pre>
<p>ok , ist bool gibt also true oder false aus. er vergleich isbn mit rhs.isbn<br />
so weit so gut.<br />
gecalled wird diese member fucktion mit zb</p>
<pre><code class="language-cpp">total.same_isbn(trans);
</code></pre>
<p>Warum ist es sales_item const ?</p>
<p>Warum ist es Sales_item &amp;rhs und nicht<br />
Sales_item rhs?</p>
<p>Woher weiß das programm das same_isbn auf string isbn zurückgreift ?<br />
string isbn wurde doch lediglich in privat deklariert. ich weiß das this auf isbn zeigen soll, aber es wurde doch nirentwo gesagt, dass this wirklich auf isbn zeigen soll. ich bin verwirrt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title="=("
      alt="😞"
    /></p>
<p>ich hoffe ihr könnt mir <strong>mal</strong> wieder helfen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title="=("
      alt="😞"
    /></p>
<p>danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/291115/member-functions</link><generator>RSS for Node</generator><lastBuildDate>Mon, 17 Aug 2026 21:25:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/291115.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 10 Aug 2011 22:44:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to member functions on Wed, 10 Aug 2011 22:44:37 GMT]]></title><description><![CDATA[<p>hey,</p>
<pre><code class="language-cpp">class Sales_item {
public:
    // operations on Sales_item objects
    double avg_price() const;
    bool same_isbn(const Sales_item &amp;rhs) const
        { return isbn == rhs.isbn; }

private:
    std::string isbn;
    unsigned units_sold;
    double revenue;
};
</code></pre>
<p>ich habe mir jetzt das kapitel 2x durchgelesen und ich bin immernoch nicht schlauer geworden. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title="=("
      alt="😞"
    /></p>
<p>frage 1:<br />
public privat was genau bedeutet das ?</p>
<p>kann ich mir privat wie eine forschleife vorstellen zB for (int i =0; i!=2; ++i)<br />
wo man außerhalb der schleife keinen zugriff auf i hat ?</p>
<p>frage 2:</p>
<pre><code class="language-cpp">double avg_price() const;
</code></pre>
<p>hat doch keine aufgabe oder ? dieser code gibt wohl kaum der average price aus. wofür ist er gut ?</p>
<p>frage 3 :</p>
<pre><code class="language-cpp">bool same_isbn(const Sales_item &amp;rhs) const
        { return isbn == rhs.isbn; }
</code></pre>
<p>ok , ist bool gibt also true oder false aus. er vergleich isbn mit rhs.isbn<br />
so weit so gut.<br />
gecalled wird diese member fucktion mit zb</p>
<pre><code class="language-cpp">total.same_isbn(trans);
</code></pre>
<p>Warum ist es sales_item const ?</p>
<p>Warum ist es Sales_item &amp;rhs und nicht<br />
Sales_item rhs?</p>
<p>Woher weiß das programm das same_isbn auf string isbn zurückgreift ?<br />
string isbn wurde doch lediglich in privat deklariert. ich weiß das this auf isbn zeigen soll, aber es wurde doch nirentwo gesagt, dass this wirklich auf isbn zeigen soll. ich bin verwirrt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title="=("
      alt="😞"
    /></p>
<p>ich hoffe ihr könnt mir <strong>mal</strong> wieder helfen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title="=("
      alt="😞"
    /></p>
<p>danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2104671</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2104671</guid><dc:creator><![CDATA[kantaki]]></dc:creator><pubDate>Wed, 10 Aug 2011 22:44:37 GMT</pubDate></item><item><title><![CDATA[Reply to member functions on Wed, 10 Aug 2011 23:24:17 GMT]]></title><description><![CDATA[<p>Das sind alles fragen, die man sich mit einem einfachen Einsteigerbuch/Tutorial selbst beantworten könnte. Sich &quot;private&quot; wie Gültiggeitsbereiche vorzustellen halte ich für nicht gut, das trifft es nicht. Die Variablen existieren solange, wie das Objekt der Klasse existiert. Das private bedeutet einfach, dass nur das Objekt der Klasse Zugriff auf diese Member hat. Konkret:</p>
<pre><code class="language-cpp">class A
{
public:
  void setI(int val)
  {
    i = val;
  }
private:
  int i;
};

int main()
{
  A a;
  a.setI(5); // alles klar
  a.i = 5; // geht nicht!
}
</code></pre>
<p><a href="http://de.wikipedia.org/wiki/Datenkapselung_%28Programmierung%29" rel="nofollow">http://de.wikipedia.org/wiki/Datenkapselung_(Programmierung)</a></p>
<p>Zu deinen anderen Fragen: Das sind Referenzen. Referenzen zeigen auf etwas (so wie Pointer), allerdings werden sie so behandelt wie das Objekt auf das sie zeigen. Dazu auch:<br />
<a href="http://de.wikibooks.org/wiki/C%2B%2B-Programmierung/_Weitere_Grundelemente/_Referenzen" rel="nofollow">http://de.wikibooks.org/wiki/C%2B%2B-Programmierung/_Weitere_Grundelemente/_Referenzen</a></p>
<p>Edit <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19375">@SeppJ</a>:<br />
Heute ist aber der Wurm drin. <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/2104674</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2104674</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Wed, 10 Aug 2011 23:24:17 GMT</pubDate></item><item><title><![CDATA[Reply to member functions on Wed, 10 Aug 2011 22:55:39 GMT]]></title><description><![CDATA[<p>Darf ich dir nahelegen die Kapitel <strong>davor</strong> gründlich zu lesen? Das sind allesamt Lehrbuchfragen und nicht wenige. Und bei vielen deiner Fragen ist es ziemlich wichtig, dass man die Antworten wirklich gründlich verstanden hat, weil sie wichtige Grundlagen sind. Und ein Forumsbeitrag kann nicht mithalten, wo ein Lehrbuch diese Fragen über mehrere Kapitel beantworten wird (du fragst ziemlich viel). Selbst wenn sich hier jemand viel Mühe gibt, werden nicht mehr als 5 Sätze pro Antwort rauskommen, bei denen du es dann doch nicht verstehst, wenn du die Hintergründe nicht kennst.</p>
<p>edit: Wie passend. cooky451s Antwort bezieht sich in 3 Sätzen auf deine Frage, dazu 1 Codebeispiel und 1 Link. Recht ausfuhrlich. Hast du, kantaki, jetzt mehr Durchblick, was private und public bedeuten?</p>
<blockquote>
<p>Edit <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19375">@SeppJ</a>:<br />
Heute ist aber der Wurm drin. <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>Joa. Mal ordentlich ausschlafen. Morgen bin ich wieder schneller <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2104675</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2104675</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 10 Aug 2011 22:55:39 GMT</pubDate></item><item><title><![CDATA[Reply to member functions on Wed, 10 Aug 2011 22:54:58 GMT]]></title><description><![CDATA[<p>kantaki schrieb:</p>
<blockquote>
<p>frage 1:<br />
public privat was genau bedeutet das ?</p>
<p>kann ich mir privat wie eine forschleife vorstellen zB for (int i =0; i!=2; ++i)<br />
wo man außerhalb der schleife keinen zugriff auf i hat ?</p>
</blockquote>
<p>Mit der for()-Schleife und Scope-Einschränkungen hat das weniger zu tun. Es geht darum, wer berechtigt ist, die Variablen zu nutzen (public: jeder, protected: eigene Methoden, Freunde und abgeleitete Klassen, private: nur eigene Methoden und Freunde).</p>
<blockquote>
<p>frage 2:</p>
<pre><code class="language-cpp">double avg_price() const;
</code></pre>
<p>hat doch keine aufgabe oder ? dieser code gibt wohl kaum der average price aus. wofür ist er gut ?</p>
</blockquote>
<p>Das ist nur eine Deklaration der Methode. Was sie macht, mußt du noch irgendwo anders festlegen per</p>
<pre><code class="language-cpp">double Sales_item::avg_proce() const
{
  // passende Berechnungen
  return 4711;
}
</code></pre>
<blockquote>
<p>frage 3 :</p>
<pre><code class="language-cpp">bool same_isbn(const Sales_item &amp;rhs) const
        { return isbn == rhs.isbn; }
</code></pre>
<p>ok , ist bool gibt also true oder false aus. er vergleich isbn mit rhs.isbn<br />
so weit so gut.<br />
gecalled wird diese member fucktion mit zb</p>
<pre><code class="language-cpp">total.same_isbn(trans);
</code></pre>
<p>Warum ist es sales_item const ?</p>
<p>Warum ist es Sales_item &amp;rhs und nicht<br />
Sales_item rhs?</p>
</blockquote>
<p>Das &amp; ist eine Referenz und erspart es dir, den übergebenen Parameter zu kopieren, die beiden const verhindern dann, daß du versehentlich den Inhalt von *this (alias total) oder rhs (alias trans) veränderst.</p>
<blockquote>
<p>Woher weiß das programm das same_isbn auf string isbn zurückgreift ?<br />
string isbn wurde doch lediglich in privat deklariert. ich weiß das this auf isbn zeigen soll, aber es wurde doch nirentwo gesagt, dass this wirklich auf isbn zeigen soll. ich bin verwirrt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title="=("
      alt="😞"
    /></p>
</blockquote>
<p>Es gibt recht klare Regeln (Stichwort: Scope), nach welchen Prinzipien Bezeichner zugeordnet werden. Und hier gibt es nur eine in Frage kommende Variable namens &quot;isbn&quot; (der String-Member von this), deshalb wird dieser verwendet).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2104676</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2104676</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 10 Aug 2011 22:54:58 GMT</pubDate></item><item><title><![CDATA[Reply to member functions on Wed, 10 Aug 2011 22:59:47 GMT]]></title><description><![CDATA[<p>1:<br />
Äh, ja, ein kleines bisschen kannst du das mit dem Variable Scope vergleichen.<br />
Du kannst auf private-Member nur von innerhalb der Klasse zugreifen, also aus ihren Funktionen heraus.</p>
<p>2:<br />
Das ist eine Funktions-Deklaration.</p>
<p>3:<br />
Es ist const, weil es nicht verändert wird.<br />
Es ist eine Referenz, weil sonst das ganze Objekt kopiert werden müsste.<br />
this-&gt;isbn wäre nur nötig, wenn isbn mehrdeutig wäre, es also z.B. eine lokale Variable gebe, die auch isbn heißt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2104681</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2104681</guid><dc:creator><![CDATA[Wurstinator]]></dc:creator><pubDate>Wed, 10 Aug 2011 22:59:47 GMT</pubDate></item><item><title><![CDATA[Reply to member functions on Wed, 10 Aug 2011 23:09:14 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19375">@seppj</a><br />
das codebeispiel von coocky ist sehr gut ! ich habe es sofort verstanden.</p>
<p>eigentlich sind alle fragen zu 100% geklärt worden.</p>
<p>vielen dank , ich weiß garnicht was ich ohne euch tun sollte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/2764.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--red_heart"
      title="&lt;3"
      alt="❤"
    /></p>
<blockquote>
<p>Es gibt recht klare Regeln (Stichwort: Scope), nach welchen Prinzipien Bezeichner zugeordnet werden. Und hier gibt es nur eine in Frage kommende Variable namens &quot;isbn&quot; (der String-Member von this), deshalb wird dieser verwendet).</p>
</blockquote>
<p>genau diese regeln kannte ich nocht nicht, aber ich habe mir schon etwas in dieser richtung gedacht.<br />
was würde denn passieren wenn in private string isbn, isbn1,isbn2; stehen würde ?<br />
würde dann der erste string isbn genommen ?</p>
<p>kann ich diese regel irgentwo nachlesen ? wie heißt das stichwort dazu ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2104684</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2104684</guid><dc:creator><![CDATA[kantaki]]></dc:creator><pubDate>Wed, 10 Aug 2011 23:09:14 GMT</pubDate></item><item><title><![CDATA[Reply to member functions on Wed, 10 Aug 2011 23:12:00 GMT]]></title><description><![CDATA[<p>kantaki schrieb:</p>
<blockquote>
<p>genau diese regeln kannte ich nocht nicht, aber ich habe mir schon etwas in dieser richtung gedacht.<br />
was würde denn passieren wenn in private string isbn, isbn1,isbn2; stehen würde ?<br />
würde dann der erste string isbn genommen ?</p>
</blockquote>
<p>Er würde die erste Variable verwenden, weil die übrigen völlig andere Namen haben (für die Namensauflösung zählt nur eine exakte Übereinstimmung, sogar <code>Isbn</code> wäre etwas anderes als <code>isbn</code> )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2104686</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2104686</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 10 Aug 2011 23:12:00 GMT</pubDate></item><item><title><![CDATA[Reply to member functions on Wed, 10 Aug 2011 23:40:39 GMT]]></title><description><![CDATA[<p>okay so ganz hab ich es doch nicht verstanden. ist mir ja schon peinlich nochmal zu fragen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title="=("
      alt="😞"
    /></p>
<pre><code class="language-cpp">bool same_isbn(const Sales_item &amp;rhs) const
         { return isbn == rhs.isbn; }

         total.same_isbn(trans)
</code></pre>
<p>okay rhs ist eine reference von trans<br />
dh rhs.isbn ist das selbe wie trans.isbn<br />
und wenn same_isbn gecalled wird, wird total mit isbn gebunden<br />
also wäre das equivalent zu<br />
isbn == rhs.isbn</p>
<p>total.isbn == trans.isbn oder ?</p>
<p>mich verwirrt nur das .isbn.</p>
<p>was ich mir denke ist das der wert von total auf isbn gezeigt wird und trans auf isbn gezeigt wird. dann bräuchte man nur ein var zu deklarieren.</p>
<p>naja am besten schaue ich mir mal ein tutorial im inet an, ich will euch nicht noch mehr quälen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2104689</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2104689</guid><dc:creator><![CDATA[kantaki]]></dc:creator><pubDate>Wed, 10 Aug 2011 23:40:39 GMT</pubDate></item><item><title><![CDATA[Reply to member functions on Thu, 11 Aug 2011 11:06:46 GMT]]></title><description><![CDATA[<blockquote>
<p>also wäre das equivalent zu<br />
isbn == rhs.isbn</p>
<p>total.isbn == trans.isbn oder ?</p>
</blockquote>
<p>Theoretisch schon, aber weil isbn private ist, kannst du es nicht von außen aufrufen. Wäre isbn public, wären die beiden Zeilen identisch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2104830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2104830</guid><dc:creator><![CDATA[Wurstinator]]></dc:creator><pubDate>Thu, 11 Aug 2011 11:06:46 GMT</pubDate></item><item><title><![CDATA[Reply to member functions on Thu, 11 Aug 2011 20:00:54 GMT]]></title><description><![CDATA[<p>kantaki schrieb:</p>
<blockquote>
<p>was ich mir denke ist das der wert von total auf isbn gezeigt wird und trans auf isbn gezeigt wird. dann bräuchte man nur ein var zu deklarieren.</p>
</blockquote>
<p>Genau genommen sind an der gesamten Aktion zwei Objekte beteiligt - total und trans (die wurden irgendwo in der umliegenden Funktion angelegt). Wenn du jetzt deine Methode per <code>total.same_isbn(trans)</code> aufrufst, wird this (ein implizit mit übergebener Parameter für Klassenmethoden) mit der Adresse von total und rhs mit einem Verweis auf trans initialsiert, das heißt per *this und rhs erreichst du deine beiden Objekte nur unter einem anderen Namen (die &quot;echten&quot; Namen kannst du in der Methode idR nicht verwenden - aber genau dafür gibt es ja Parameter).<br />
isbn ist ein Element der Klasse, das heißt jedes deiner Objekte besitzt ein eigenes Teilobjekt mit diesem Namen, die du im aufrufenden Code per &quot;total.isbn&quot; bzw. &quot;trans.isbn&quot; nutzen könntest (wenn es nicht privat wäre) und innerhalb der Methode über this-&gt;isbn (da der Name eindeutig ist, ist die reine Angabe isbn hier äquivalent dazu) bzw. rhs.isbn erreichst.</p>
<p>(den Rest hast du womöglich unglücklich formuliert, aber ich denke mal du meintest das richtige)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2105033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2105033</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 11 Aug 2011 20:00:54 GMT</pubDate></item></channel></rss>