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

Dilema u klasi, sa () i bez zagrade

[es] :: C/C++ programiranje :: Dilema u klasi, sa () i bez zagrade

[ Pregleda: 1587 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

azzpoz

Član broj: 300637
Poruke: 96



+1 Profil

icon Dilema u klasi, sa () i bez zagrade30.10.2013. u 16:50 - pre 76 meseci
Code:
#include <iostream>
using namespace std;

class osoba
{
     int brojID;
public:
     osoba()
{
          cout<<"\n Upisi broj: ";
          cin>>brojID;
}

     ~osoba(){cout<<" GOTOVO "<<endl;}
};

int main()
{

          osoba ja;  // radi Upisi broj
            
          osoba Elite();   //ne radi Upisi broj
       // koja je razlika u tome sa zagradom i bez zagrade


system("pause>0"); return 0;
}

Da li zagrade koristimo samo kada trebamo navoditi neke parametre?

[Ovu poruku je menjao azzpoz dana 30.10.2013. u 20:53 GMT+1]
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4867
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+622 Profil

icon Re: Dilema u klasi, sa () i bez zagrade30.10.2013. u 21:11 - pre 76 meseci
Citat:

osoba Elite(); //ne radi Upisi broj

Ovo zapravo nije kreiranje objekta (što si želeo, a inače se postiže eliminisanjem zagrada), već deklarisanje funkcije Elite(), koja nema argumente, a koja je tipa "osoba". Zato se konstuktor i ne izvršava.


 
Odgovor na temu

azzpoz

Član broj: 300637
Poruke: 96



+1 Profil

icon Re: Dilema u klasi, sa () i bez zagrade30.10.2013. u 22:06 - pre 76 meseci
Citat:
X Files: Ovo zapravo nije kreiranje objekta (što si želeo, a inače se postiže eliminisanjem zagrada), već deklarisanje funkcije Elite(), koja nema argumente, a koja je tipa "osoba". Zato se konstuktor i ne izvršava.


Da li to znači da ako kreiramo objekat bez unaprijed poznatih parametara, ne treba navoditi zagradu.
A zagradu s parametrima unutar nje, koristimo kada su nam ti parametri poznati i kada napravimo konstruktor da dozvoljava kreiranje na taj način, kao npr. osoba Elite(1007);

Code:

osoba::osoba(int br = 1)
{
      brojID = br;
}


Još uvijek sam u fazama učenja programiranja, pa bih želio što bolje razmjeti "sitne/osnovne" pojmove o tome!!!
 
Odgovor na temu

Burgos
Nemanja Borić
Amazon Web Services
Berlin

Član broj: 12484
Poruke: 1912
*.pools.arcor-ip.net.

Sajt: stackoverflow.com/users/1..


+471 Profil

icon Re: Dilema u klasi, sa () i bez zagrade30.10.2013. u 23:04 - pre 76 meseci
Ako kreiraš objekat i želiš da pozoveš konstruktor bez argumenata (ili sa svim argumentima sa podrazumevanom vrednošću), ne koristiš zagrade.

C++11 standard uvodi uniformnost prilikom inicijalizacije i sprečava zabunu, tako što koristi { i } za inicijalizaciju. Ako imaš kompajler sa podrškom za C++11, počni sa tim.

http://ideone.com/8GZ9tl


Code:
#include <iostream>
using namespace std;

class osoba
{
     int brojID;
public:
     osoba()
    {
          cout << "osoba::osoba()" << endl;
    }
    
    osoba(int br)
    {
          cout << "osoba::osoba(int)" << endl;
    }

     ~osoba(){cout << "osoba::~osoba() " <<endl;}
};

int main()
{

          osoba ja{1};  
          osoba Elite{};
          
          return 0;
}



Code:
osoba::osoba(int)
osoba::osoba()
osoba::~osoba() 
osoba::~osoba() 


http://ideone.com/8GZ9tl
 
Odgovor na temu

[es] :: C/C++ programiranje :: Dilema u klasi, sa () i bez zagrade

[ Pregleda: 1587 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

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