Hogyan tudom vissza adni cím szerint?
// main.cpp
# include <iostream>
using std::cout;
class cCounter {
public:
cCounter(int val = 0): i_val(val) { cout <<"cCounter konstruktor \n"; }
~cCounter() { cout <<"cCounter destruktor \n"; }
const cCounter i_add(const cCounter *const rhs) { return cCounter( (*this).i_val + (*rhs).i_getVal() ); }
int i_getVal()const { return i_val; }
private:
int i_val; };
int main() {
cCounter obj2,obj3(5);
cCounter obj1 = obj2.i_add(&obj3); /*Azt akarom,hogy ne hívódjon meg a default copy konstruktor amikor returnhoz érkezik a program /*
return 0; }
Miért nem írtok ha hülyeséget beszélek világosítsatok fel pls.
Cserébe zöld kezet adok a normális válaszokért.
{ return cCounter( (*this).i_val + (*rhs).i_getVal() ); }
Itt a konstruktor hívom meg.
Majd a létrehozott cCounter objektumot vissza adom érték szerint.
Ha cím szerint akarnám vissza adni,akkor,hogy nézne ki a függvény és a mainben ez a sor: cCounter obj1 = obj2.i_add(&obj3)





{ return new cCounter( (*this).i_val + (*rhs).i_getVal() ); }
De ekkor gondoskodni kell a felszabadításról is.





@iostream nem egészen értem, ez miért is lenne jobb?
Egyébként nem hívódik meg a return után a default copy constructor. Az i_add metódusba minden constans, vagyis nem jöhet szóba hogy az this objektumon vagy az ths mutató által mutatott objektumon lévő objektumot módosítsuk. Visszatérési értéke egy cCounter típusú objektum, obj1,obj2,obj3 objektumod van azaz 3 db. 3-3 konstruktor/destruktor hívás történik és pont.





"Miért nem írtok"
Erre meg csak annyit, hogy mert fél 1 után 9 perccel írtad ki a kérdést. Tisztességes emberek hétköznap dolgoznak.





"@iostream nem egészen értem, ez miért is lenne jobb?"
Nem jobb, de a kérdező ezt akarja. És ismerjük ezt a kérdezőt, a fejébe vesz valamit, akkor ragaszkodik hozzá, akár van értelme, akár nincs. A kérdésére meg ez a válasz.
Én még mindig nem értem,hogy ebben az esetben miért nem hívódik meg a copy konstruktor.
const cCounter cCounter::i_add(const cCounter &rhs) { return cCounter((*this).i_val + rhs.i_getVal()); }
Látható,hogy érték szerin adódik vissza a vermen létrehozott új cCounter típusú objektum.
Érték szerint adjuk vissza tehát le kell,hogy másolja a copy konstruktor és ezzel a másolattal írná felül egy már meglévő objektumot.





Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!