Klasa i paramerty jej metody.
Ostatnio zmodyfikowano 2009-07-10 21:37
KALINSKI Temat założony przez niniejszego użytkownika |
Klasa i paramerty jej metody. » 2009-07-10 21:05:26 Witam Jestem na maxa początkującym "programistą". Dlatego prosze o mega wyrozumiałość:) Moje pytanie dotyczy deklaracji parametrów funkcji w klasie, pokażę to na przykładzie mojej bazy. Moja baza oczywiście się kompiluje w DEV C++ i uruchamia ale mam pewne wątpliwości. A teraz konrety: Mam taką klasę: class baza { osoba xosoba[ 100 ]; int n; public: void wprowadz_dane(); void zapisz_baze(); void odczytaj_baze(); void wyswietl(); };
void baza::zapisz_baze()
{ ofstream plik( "baza.txt", ios::out ); { for( int i = 0; i < n; ++i ) { plik << "|" << xosoba[ i ].wiek; plik << "|" << xosoba[ i ].imie; plik << "|" << xosoba[ i ].nazwisko << "|" << endl; } } plik.close(); } I teraz: 1. Czy zapis funkcji w klasie " void zapisz_baze(); " jest ok? 2. Czy powinienem dodać jakieś parametry funkcji np. void zapisz_baze(parametr1, parametr2, .... ,parametrn); ?? 3. Czy zapis jaki ja mam oznacza, że funkcja nic nie zwraca i nie powinno się tak deklarować funkcji?? Naprawdę proszę o wyrozumiałość i wyjaśnienie bo tego nie rozumię. PZDR Rafał |
|
GoldWolf |
» 2009-07-10 21:22:33 void baza::zapisz_baze() -> to nie jest funkcja tylko metoda klasy baza!!! 1. zapis metody jest poprawy, 2. czy metoda będzie pobierać parametry to zależy czy jest to potrzebne, jeśli nie jest to nie musi żadnych parametrów pobierać 3. metoda jest ok, może nic nie zwracać
|
|
DeBugger |
» 2009-07-10 21:23:20 1. Wydaje mi się że tak; 2. Nie wydaje mi się, żebyś musiał w tym przypadku; 3. Funkcja zadeklarowana void i nic nie zwracająca jest ok (to się nazywa procedura). Jednakże gdybyś zadeklarował taką z typem zwracalnym nie zwracając nic byłoby to błędem (programistycznym, a nie kompilatora, kompilator zwróciłby warning).
//edit: Dante, czy my się ścigamy?? :P @Dante: odpowiedź miałem już gotową tylko zawahałem się, ale fajnie wyszło. |
|
KALINSKI Temat założony przez niniejszego użytkownika |
» 2009-07-10 21:35:26 Dziękuję za szybką odpowiedź oraz za edycję wyglądu mojego postu. Chciałbym jeszcze ostatnie pytanie zadać do mojego postu. Bazę napisałem w sposób jak pokazałem wcześniej a za zadanie miałem napisać w ten sposób: class baza { osoba tablica[ 100 ]; .... public: void dodaj( osoba o ); void odczyt( char * nazwaPliku ); void zapisz( char * nazwaPliku ); ... } Czy sposób w jaki miałem to zarobić zmieniłby coś w prostej bazie danych?? |
|
GoldWolf |
» 2009-07-10 22:22:42 Nie wiem czy rozumiem pytanie, ale jeżeli nie zmieniasz nic w samej bazie, to nie ma znaczenia. Możesz sobie nawet napisać 3 różne programy edytującą tą samą bazę. To od ciebie zależy jak będzie wyglądać baza więc i od ciebie zależy jakich użyjesz metod edycji. void odczyt( char * nazwaPliku ); void zapisz( char * nazwaPliku ); Lepiej zastosować void odczyt( string nazwaPliku ); void zapisz( string nazwaPliku ); |
|
manfred |
» 2009-07-10 21:37:31 Funkcja nie zwraca void i nie ma w środku returna => UB. Większość kompilatorów wszystkich języków wywala wtedy error, jedynie GCC trzeba do tego zmuszać przez -Werror. //ach... zróbcie jakiegoś ajaksa sprawdzającego, czy nikt nie napisał nowego postu, bo potem się dzieją takie rzeczy jak w tym temacie (tu to aż dwukrotnie!) //Fanael |
|
« 1 » |