Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Klasa i paramerty jej metody.

Ostatnio zmodyfikowano 2009-07-10 21:37
Autor Wiadomość
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ę:
C/C++
class baza
{
    osoba xosoba[ 100 ];
    int n;
public:
    void wprowadz_dane();
    void zapisz_baze();
    void odczytaj_baze();
    void wyswietl();
   
};


//a tak wygląda przykładowa funkcja:
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ł
P-8413
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ć
P-8414
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.
P-8415
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:
C/C++
class baza
{
    //tutaj na przykład tablica osób
    osoba tablica[ 100 ];
    ....
public:
    void dodaj( osoba o ); //dopisje pojedynczą osobę o do zmiennej tablica
    void odczyt( char * nazwaPliku );
    void zapisz( char * nazwaPliku );
    ...
}
Czy sposób w jaki miałem to zarobić zmieniłby coś w prostej bazie danych??
 
P-8416
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.

C/C++
void odczyt( char * nazwaPliku );
void zapisz( char * nazwaPliku );
Lepiej zastosować
C/C++
void odczyt( string nazwaPliku );
void zapisz( string nazwaPliku );
P-8417
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
P-19025
« 1 »
  Strona 1 z 1