Przesyłanie argumentu do funkcji składowej, zaprzyjaźnionej - czy też przez wartość ?

2015-02-24 23:42
0

Witam,

wiem, że jeśli mam funkcję globalną wywołaną z argumentem jakiejś klasy to argument jest przesyłany przez wartość.

Czy w przypadku funkcji zaprzyjaźnionych i składowych jest tak samo ?

Pozostało 580 znaków

2015-02-25 00:14
4

wiem, że jeśli mam funkcję globalną wywołaną z argumentem jakiejś klasy to argument jest przesyłany przez wartość.

Jest przekazywany tak, jak jest przekazywany. Niekoniecznie przez wartość.

Czy w przypadku funkcji zaprzyjaźnionych i składowych jest tak samo

To nie ma wpływu na przekazywanie argumentów.

?

Nie stawiamy spacji przed znakiem zapytania.

Pozostało 580 znaków

2015-02-25 00:51
0

Jeśli przekazuje tak funkcja(tablica[]) to jest argument przesyłany przez wartość. Jeśli funkcja(&tablica) to przez referencje. I chciałem spytać czy jest tak samo w przypadku funkcji zaprzyjaźnionych i składowych.

Pozostało 580 znaków

2015-02-25 01:03
1

Jak sobie przekażesz, tak będziesz miał. Nie ma znaczenia, czy to funkcje globalne, składowe, zaprzyjaźnione czy jakiekolwiek inne.

Pozostało 580 znaków

2015-02-25 01:14
0

Tablicę np. w normalnych funkcjach przekazuje się przez wskaźnik. W funkcji, której argumentem jest obiekt jakieś klasy już tak nie jest. I nie wiem czy tak samo jest w funkcjach zaprzyjaźnionych i lokalnych czy tylko tej.

Pozostało 580 znaków

2015-02-25 01:19
0

Tablicę np. w normalnych funkcjach przekazuje się przez wskaźnik

Nie, przez wartość. Dokładniej kopiujesz wartość (adres) wskaźnika.

W funkcji, której argumentem jest obiekt jakieś klasy już tak nie jest. I nie wiem czy tak samo jest w funkcjach zaprzyjaźnionych i lokalnych czy tylko tej.

Skoro funkcja oczekuje obiektu i nie może zrobić niejawnej konwersji to absolutnie nic tego nie zmieni. Musisz dostarczyć funkcji to, czego sobie ona życzy.

edytowany 1x, ostatnio: spartanPAGE, 2015-02-25 01:19
Pokaż pozostałe 4 komentarze
Tu może masz rację, dlatego zawsze polecam książkę/sprawdzone kursy początkującym. Ten język jest wystarczająco zawiły, żeby sobie jeszcze utrudniać życie kiepskim kursem. :-) - n0name_l 2015-02-25 08:32
symfonia c++ jest zła ? Bo z niej korzystam. - nowicjusz35 2015-02-28 23:26
@nowicjusz35 Do najlepszych nie należy, ale jak już zakupiłeś to szkoda by się zmarnowała, jedyne co to polecam konsultować to co w książce z dokumentacją. @niezdecydowany Rotfl. Idź już spać bo późna pora. - n0name_l 2015-02-28 23:33
Trollujesz czy o co ci chodzi? Ta książka nie ma żadnych 15 lat... - n0name_l 2015-03-01 00:48
o k!@a... posypuje głowę popiołem, zj2bałem, nie ta data, ide stond - niezdecydowany 2015-03-01 00:49

Pozostało 580 znaków

2015-02-25 08:20
0

@nowicjusz35

czyli też przez wartość dla funkcji zaprzyjaźnionej i składowej ? Bo w składowej to jest wskaźnik this i nadal nie wiem jak to jest.

Musisz zrozumieć, że rodzaj funkcji nie ma żadnego wpływu na to w jaki sposób są przekazywane argumenty.

W składowej funkcji deklarujesz tylko argumenty bez thisa, możesz sobie wyobrazić, że jak masz:

struct Foo {
  void Bar(int x, int y);
};

To ta funkcja wygląda tak:

void Bar(Foo* this, int x, int y);

this jest zawsze wskaźnikiem, a resztę argumentów deklarujesz samemu, więc jak zrobisz tak będziesz miał.

edytowany 1x, ostatnio: n0name_l, 2015-02-25 08:23

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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