<br><br><div class="gmail_quote">2010/3/6 Dan-George Filimon <span dir="ltr">&lt;<a href="mailto:dangeorge.filimon@gmail.com">dangeorge.filimon@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

Nu mi-e clar cum anume implementez adunarea in cazul ala. Oricum la adunare trebuie creat un nou obiect care sa fie intors, deci as putea face asa:<br>
<div class="im"><br>
const mine mine::operator+(const mine&amp; x) {<br>
</div>        mine helper(max(x.n, this-&gt;n));<br>
<div class="im">        helper.n = max(x.n, this-&gt;n);<br>
        int i;<br>
</div>        for (i = 0; i &lt; helper.n; ++ i)<br>
<div class="im">                helper.A[i] = this-&gt;A[i] + x.A[i];<br>
        for (; i &lt; helper.n; ++ i)<br>
                if (i &gt;= x.n)<br>
                        helper.A[i] = this-&gt;A[i];<br>
                else<br>
                        helper.A[i] = x.A[i];<br>
        //helper-&gt;print();<br>
        return helper;<br>
}<br>
<br>
</div>si in main() am<br>
<br>
z = x + y;<br>
<br>
unde operatorul = e definit ca si copy-constructorul tau. Asa e ok?<br>
<div class="im"><br>
On Mar 6, 2010, at 6:06 PM, Andrada Georgescu wrote:<br>
&gt; Nu ar trebui să aloci dinamic acolo un nou obiect, îți produce leak-uri (tu nu vei știi niciodată să eliberezi zona alocată<br>
&gt; pentru obiect în sine). Trebuie, după cum spunea și Andrei să îțî definești și un copy-constructor, pe lângă assignment.<br>
&gt; De exemplu:<br>
&gt;<br>
&gt; mine(const mine &amp;x) {<br>
&gt;     this-&gt;A = new int[x.n];<br>
&gt;     this-&gt;n = x.n;<br>
&gt;     memcpy(this-&gt;A, x.A, x.n * sizeof(int));<br>
&gt; }<br></div></blockquote><div><br>Pare ok, dar va trebui să îi definești pe amândoi, altfel, la iesirea din definirea +, nu va ști exact cum să întoarcă valoarea (efectiv o copie) a obiectului tău alocat pe stivă și se va apela copy-constructorul implicit, care doar va atribui pointerului obiectului<br>

nou creat vechea adresă (dar care între timp a fost eliberată la ieșirea din scop - adică din funcție).<br></div></div><br clear="all"><br>-- <br>Andrada Georgescu<br>