Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 3 odgovora
  • 2.654 pregleda

Najnovija ↓

Dilema u klasi, sa () i bez zagrade 30.10.2013. u 17:50 · pre 158 meseci
izmenjeno 1 put, poslednji put azzpoz 30.10.2013. u 20:53
  1. azzpoz30.10.2013. u 20:53zapis iz teksta poruke
#1
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?
Re: Dilema u klasi, sa () i bez zagrade 30.10.2013. u 22:11 · pre 158 meseci #2
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.


Sviđa mi se1
Re: Dilema u klasi, sa () i bez zagrade 30.10.2013. u 23:06 · pre 158 meseci #3
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!!!
Re: Dilema u klasi, sa () i bez zagrade 31.10.2013. u 00:04 · pre 158 meseci #4
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
Sviđa mi se1
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme