|
Programiranje Programski jezici, tehnike, alatke... |
|
Alatke vezane za temu | Vrste prikaza |
15.4.2009, 11:59 | #1 |
Član
|
Problem sa konstruktorima
Radi se o klasi X koja ima jedno polje a tipa float, i tri konstruktora: X(), X(float fa), X(int fa), stime da je 3. kostruktor realizovan preko 2.:
Kod:
#include <iostream> using namespace std; class X { public: X(); X(float fa); X(int fa); void print(); private: float a; }; X::X() { cout<<"Calling X()."<<endl; this->a = 0; cout<<"Closing X(). a = "<<a<<endl; } X::X(float fa) { cout<<"Calling X(float)."<<endl; this->a = fa; cout<<"Closing X(float). a = "<<a<<endl; } X::X(int fa) { cout<<"Calling X(int)."<<endl; X((float)fa); cout<<"Closing X(int). a = "<<a<<endl; } void X::print() { cout<< a <<endl; } int main() { X test(2); test.print(); return 0; } Kod:
Calling X(int). Calling X(float). Closing X(float). a = 2 Closing X(int). a = NaN NaN |
15.4.2009, 14:56 | #2 |
Član
Član od: 9.7.2007.
Poruke: 119
Zahvalnice: 2
Zahvaljeno 31 puta na 29 poruka
|
Re: Problem sa konstruktorima
To je dobra tehnika u javi, ali ne radi u C++.
Ukoliko imaš neku zajedničku inicijalizaciju, stavi je u nevirtuelni metod koji oba konstruktora pozivaju. Obrati pažnju da je generalno pravilo da se iz konstruktora ne pozivaju virtuelni metodi istog objekta jer nije garantovano kada će tabela virtuelnih metoda biti inicijalizovana. |
Sledeći korisnik se zahvaljuje korisniku rile na korisnoj poruci: | ||
kish (15.4.2009) |
Bookmarks sajtovi |
|
|
Slične teme | ||||
tema | temu započeo | forum | Odgovora | Poslednja poruka |
Nokia e71 i problem sa USB konekcijom | PsyDuck | Aparati i oprema | 5 | 1.12.2010 15:17 |
Problem sa obaranjem sistema | Tintoreti | Kvarovi | 2 | 5.1.2009 0:48 |
Problem sa podešavanjima TV i monitora | bacacar | Grafika | 2 | 3.1.2009 13:06 |
Problem sa 3DSM 8 - problem sa konjem | M.A.G.E | 3D radovi | 7 | 29.12.2008 11:27 |
Problem sa reprodukcijom DVD materijala | Dimo | Kvarovi | 7 | 27.4.2008 16:05 |