A czy struktura moze miec przeciazone operatory? metody? Dziedziczenie? Moze jestem do tylu z C++ ale chyba nie? ;d
@Edit
Ok, w necie pisze jak mowicie, zwracam honor. Nie zmienia to faktu ze w kazdym innym jezyku jest inaczej ;d
Wersja do druku
A czy struktura moze miec przeciazone operatory? metody? Dziedziczenie? Moze jestem do tylu z C++ ale chyba nie? ;d
@Edit
Ok, w necie pisze jak mowicie, zwracam honor. Nie zmienia to faktu ze w kazdym innym jezyku jest inaczej ;d
Na stercie? Czyli ze na stosie tak?
No bo jesli tak to przeciez kazda zmienna stworzona lokalnie jest zaalokowana na stosie i jest z niego wywalana ( i wylatuje out of scope ) przy zakonczeniu funkcji. Oczywiscie nie wspominam tutaj celowo o new ktore z tego co pamietam na stosie tworzy jedynie wskaznik ;)
Dla gcc słowa kluczowe struct i class to oznaczenie domyślnego dostępu i taka wskazówka, co to na prawdę jest, ale sam decyduje z kontekstu jak to traktować z tego co pamiętam. Najlepiej by było przekopać jego kod żeby mieć pewność
stos i sterta to są dwa różne miejsca w pamięci. Domyślnie struktura jest alokowana na stosie w przeciwieństwie do obiektu klasy, który jest alokowany na stercie, a wskaźnik do tego obiektu umieszczany jest na stosie. Natomiast c++ jest tak elastycznym językiem, że umożliwia on wszystkie kombinacje, czyli tworzenie obiektu zarówno na stosie jak i stercie ( Obj o1(); -> stos; Obj* o2 = new Obj() -> sterta ) oraz struktury ( Stu* stru = (Stu*)malloc(sizeof(*stru)); -> sterta; Stru stru(); -> stos).
Ach, no tak, heap :) dzięki, nie wiedziałem jak to sie tłumaczy.
Tak, masz rację - sterta jest do trzymania zmiennych dynamicznych ( no i pointerów na stosie - jeśli stracimy ten pointer, to mamy memory leak ) , ewentualnie jesli ktos alokuje obiekt bezposrednio na stosie ( Obj costam(); ) to wylatuje po zakonczeniu stosu ( kiedy stos wywala wszystkie dane az do adresu powrotu do poprzedniej funkcji ;) )
przez te wasze pierd&#&nie, ze struktura jest prawie tym samym co klasa, zle odpowiedzialem na rozmowie na pytanie.
Otoz struktura to typ wartosciowy a klasa typ referencyjny. to tak dla potomnych.
Mówisz o C++ czy o c#?
@down
A nie ma różnicy między C++ a c#? :d
C#, a to jakas roznica?
w c# to tak, struct to typ wartościowy natomiast klasa referencyjny. Jednakże w c++ jest troche inaczej tak jak pisałem we wcześniejszym poście. Pomimo tego, że c++ i c# wydają się byc podobnymi językami, niestety tak nie jest.