Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

overloading na osnovu povratnog tipa

[es] :: C/C++ programiranje :: C/C++ za početnike :: overloading na osnovu povratnog tipa

[ Pregleda: 1481 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

grabber
Gorazde

Član broj: 213110
Poruke: 172
*.PPPoE-5476.sa.bih.net.ba.



Profil

icon overloading na osnovu povratnog tipa19.10.2011. u 00:07 - pre 151 meseci
Zanima me zasto nije dozvoljen overloading funkcija prema povratnom tipu. Npr ako imam funkciju

int f(int a){....}

i double f(int a){....}

a u main-u, kod poziva funkcije npr

double varijabla = f(5);

zasto je kompajleru konfuzno kod poziva ove funkcije, kada sam jasno rekao da ocekujem nazad double vrijednost, a da bi dobio double, logicno je da trebam pozvati onu funkciju imena F koja vraca tip double? je li ima tu neko objasnjenje zasto ne ide tako? razumijem da se ovo moze rijesiti sa template funkcijama i slicno, ali me ne zanima rjesenje problema, nego zasto ovo nije moguce.

hvala unaprijed
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: overloading na osnovu povratnog tipa19.10.2011. u 10:15 - pre 151 meseci
U ovom slučaju ono što je logično za jednu osobu ne mora da bude logično za drugu. Šta ako ja baš želim da pozovem funkciju koja vraća int i da rezultat dodelim double promenljivoj? Teoretski bih morao da koristim neki privremeni int, ali šta ako hoću da pozovem funkciju u zaglavlju for petlje, ili u inicijalizacionoj listi nekog konstruktora? Tada bi bilo nemoguće pozvati funkciju koja vraća int tamo gde se očekuje double. Pošto novi hipotetički feature C++ jezika ne može da se koristi svuda gde očekujemo da može da se koristi onda takav feature i ne može biti uveden. I zato povratna vrednost funkcije ne ulazi u potpis funkcije.

Neka te teši činjenica da u jeziku C ranije (a mislim ni sada u standardnom C) nisi mogao da imaš nikakve dve istoimene funkcije.
 
Odgovor na temu

Goran Arandjelovic
Beograd

Član broj: 29116
Poruke: 387
*.dynamic.sbb.rs.



+9 Profil

icon Re: overloading na osnovu povratnog tipa21.10.2011. u 14:51 - pre 151 meseci
Ovde se priča samo o prostim tipovima, ali pazi i ovo:

Code:

class A
{
  void F() const
  {
    cout << "A::F" << endl;
  }
};

class B
{
  void F() const
  {
    cout << "B::F" << endl;
  }
};

A MojaFunkcija(); // vraca instancu A
B MojaFunkcija(); // vraca instancu B


Code:

MojaFunkcija().F(); // Ovo je sasvim validno u C++-u, ali koja funkcija "MojaFunkcija" treba biti pozvana?


Dakle, šta ako ne postoji leva strana (lvalue) kojoj nešto dodeljuješ? Zbog toga, i zbog onoga što je rekao Mihajlo ne postoji overload po povratnoj vrednosti.
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: overloading na osnovu povratnog tipa

[ Pregleda: 1481 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.