Kezdőoldal » Számítástechnika » Programozás » Hogyan tudom vissza adni cím...

Hogyan tudom vissza adni cím szerint?

Figyelt kérdés

// 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; }


2012. szept. 7. 00:39
 1/7 A kérdező kommentje:

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)

2012. szept. 7. 11:11
 2/7 iostream ***** válasza:

{ return new cCounter( (*this).i_val + (*rhs).i_getVal() ); }


De ekkor gondoskodni kell a felszabadításról is.

2012. szept. 7. 11:16
Hasznos számodra ez a válasz?
 3/7 anonim ***** válasza:
100%

@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.

2012. szept. 7. 12:37
Hasznos számodra ez a válasz?
 4/7 iostream ***** válasza:

"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.

2012. szept. 7. 12:37
Hasznos számodra ez a válasz?
 5/7 iostream ***** válasza:

"@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.

2012. szept. 7. 15:16
Hasznos számodra ez a válasz?
 6/7 A kérdező kommentje:

É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.

2012. szept. 8. 01:55
 7/7 anonim ***** válasza:
A cCounter obj1 = obj2.i_add(&obj3)" közvetlenül a deklarációba van írva így az obj1 nem egy már meglevő objektum, konstruktora az i_add metódus return-ja után fog hívódni.
2012. szept. 8. 10:59
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!