kopia obiektu, obiekt jako parametr funkcji

0

Możliwe jest przekazanie obiektu jako parametru funkcji. W jaki sposób można to zrobić.
I jak da się stworzyć obiekt który będzie kopią innego obiektu?

0

Jasne, że jest możliwe, oto banalny przykład

#include<iostream>
using namespace std;

class T
{
private :
int wiek;
public :
T (int w)
{
wiek = w;
}
T(T &z){ wiek = z.wiek; } // konstruktor kopiujący
void wyswietl () { cout << wiek << endl; }
};

void w (T &os)
{
os.wyswietl();
}

int main ()
{
T a(52); // mamy obiekt klasy T
w(a); // przekazujemy go jako parametr
T s = a;
w(s);
system("pause");
return 0;
}

Pozdrawiam

0

można,ale przekazywanie obiektu jako parametr jest bardzo nieefektywne-na stosie musi zostać zrobiona wówczas jego kopia,co długo trwa zwłaszcza przy większych obiektach.
Dlatego też znacznie lepiej jest używać referencji do obiektu-wowczas tworzony jest tylko 4-bajtowy adres na stosie,co wykonywane jest błyskawiczne.Niebezpieczeństwo tkwi jedynie w fakcie możliwości niejawnej zmiany obiektu przez funkcję,ale to się tyczy referencji w ogóle.

co do kopiowania obiektów-tutaj masz do wyboru:
1)polegać na domyślnym konstruktorze kopiującym,który działa na zasadzie kopia składnik-po-składniku.Haczyk w tej metodzie polega na tym,że w przypadku kiedy składnikami obiektu są wskaźniki,ich wskazania również zostaną zdublowane,co może dać niepożądane efekty.
2)zdefiniować własny konstruktor kopiujący,i samemu już dokładnie określić,jak mają być kopiowane poszcze3gólne składniki obiektu źródłowego na docelowy

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0