dwukropek przy definiowaniu konstruktora

0
class osoba {
char *nazwisko; // lista pol prywatnych
char *imie;
int wiek;
public: // sekcja publiczna (interfejs)
osoba();
osoba(const char *nazw, const char *im, int w);
osoba(const osoba &x);
~osoba();
void odczytaj();
void wyswietl();
};

osoba::osoba(): wiek(-1) // lista inicjacyjna
{
nazwisko = (char *)malloc(1);
nazwisko[0]='\0';
imie = (char *)malloc(1);
imie[0]='\0';
}

co oznacza "osoba::osoba(): wiek(-1)" to po dwukropku - wiek(-1)?

0

To oznacza, że klasa ta pod ':' jest klasą pochodną (dziedziczną) do tej pierwszej. Programowanie obiektowe się kłania ;)

0

@up robisz sobie jaja? o_O

@lofi to jest tzw lista inicjalizacyjna kontruktora. Można na nie wywołać konstruktory klas których obiekty są polami naszej klasy.

0

No, fakt za szybko przeczytałem posta autora, sorryyy ;/

0
lofi napisał(a)

co oznacza "osoba::osoba(): wiek(-1)" to po dwukropku - wiek(-1)?

Oznacza mniej więcej to samo co:
osoba::osoba()
{
wiek = -1;
}
Po prostu jest to wywołanie 'konstruktora' typu podstawowego z parametrem -1.

@up: nom, programowanie obiektowe się kłania...

edit:
eh, postu nie zdążyłem napisać, a już temat zakończony xD

0

@up nie zgodzę się ze te dwa kody oznaczają to samo. Efekt będzie taki sam, fakt, ale sam fakt co się dzieje w takiej sytuacji to zupełnie inna bajka. W jednym przypadku wołasz zwykly konstruktor obiektu, w drugim przypadku tworzysz obiekt kontruktorem domyślnym a potem operatorem przypisania nadajesz mu wartość ;]

0

ale tam nie ma żadnej klasy wiek ani takiej funkcji składowej, prosiłbym o wyjaśnienie do dokładnie się dzieje w tej linijce (co to jest wiek (klasa, metoda?), dlaczego wywołana parametrem -1, co jest dziedziczone)

//edit. nie doczytałem ostatnich postów...

0

Gdzie tu jakieś dziedziczenie mu wciskacie O.o

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