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

Kurs C++ v2.0 rozdz. 16 Obsługa pliku p. Otwieranie pliku

Ostatnio zmodyfikowano 2010-10-12 13:41
Autor Wiadomość
marek
Temat założony przez niniejszego użytkownika
Kurs C++ v2.0 rozdz. 16 Obsługa pliku p. Otwieranie pliku
» 2010-10-11 09:34:07
Wg definicji plik otwiera się tak:
void open( const char * nazwa_pliku, ios_base::openmode tryb_otwarcia_pliku )


Ale wg.  podanego przykładu otwiera się tak:
plik.open( "nazwa_pliku.txt", std::ios::in | std::ios::out );


To w końcu jaka jest nazwa funkcji? 
open
 czy
plik.open
?
P-22718
F90M
» 2010-10-11 10:31:04
To pierwsze to DEFINICJA FUNKCJI, a drugie to przykład jej użycia.
Funkcja to open(), a plik to nazwa strumienia.
P-22719
marek
Temat założony przez niniejszego użytkownika
» 2010-10-11 10:57:11
Ale w np. poniższym przykładzie,w definicji i w użyciu funkcji jest ta sama nazwa "dodaj_1"
 
C/C++
#include <iostream>
void dodaj_1( int * ); //A
int main()
{
    int x = 100;
    std::cout << x << "\n";
    dodaj_1( & x );
    std::cout << x << "\n";
    return 0;
}
void dodaj_1( int * wsk ) //C
{
    * wsk = * wsk + 1;
} //D

To dlaczego tu były różne nazwy funkcji "open" i "plik.open" 

To tak jakby w definicji było np. "dodaj_1" a w użyciu "zwieksz_1"?
P-22720
F90M
» 2010-10-11 12:34:49
C/C++
#include <iostream>
void dodaj_1( int * ); //Deklaracja funkcji
int main()
{
    int x = 100;
    std::cout << x << "\n";
    dodaj_1( & x ); //Użycie funkcju
    std::cout << x << "\n";
    return 0;
}
void dodaj_1( int * wsk ) //Definicja funkcji
{
    * wsk = * wsk + 1;
} //Koniec Definicji

plik.open() to nie jest nazwa funkcji! open() jest nazwą funkcji, open() jest metodą (funkcją) klasy fstream, a plik to nazwa zmiennej utworzonej przez klasę fstream. Poczytaj o klasach.
P-22721
marek
Temat założony przez niniejszego użytkownika
» 2010-10-11 13:56:51
Jeszcze nie doszedłem do klas. Dzięki za informację!
Ale tak przy okazji. Jeżeli "plik.open() to nie jest nazwą funkcji"  to czym jest plik.open() ? Myślę że bez klas i obiektów tego się nie da wytłumaczyć.
P-22722
pekfos
» 2010-10-11 14:55:51
jak klas nie znasz to po co o ten temat zaczepiasz?
C/C++
class klasa {
public:
    void metoda();
};
//..
klasa obiekt;
obiekt.metoda();
P-22723
marek
Temat założony przez niniejszego użytkownika
» 2010-10-11 14:58:37
Bo to pojawiło się w rozdz. 16. Myślę że rozdz. 16 powinien być tak napisany, żeby nie powstawały tego typu pytania.
P-22724
pekfos
» 2010-10-11 15:04:44
C/C++
#include <iostream>
class hello {
public:
    void hi() {
        std::cout << "Czesc, nazywam sie " <<( long ) this << "\n"; //adres obiektu
    }
};

int main() {
    hello h1, h2;
    h1.hi();
    h2.hi();
    return 0;
}
Po uruchomieniu programu zoczysz że hi() to nazwa metody klasy a to przed kropką to obiekt którego ta metoda dotyczy(różne adresy=różne obiekty)
hi() - nazwa metody
h1.hi() - wywołanie metody hi() obiektu h1
P-22725
« 1 » 2
  Strona 1 z 2 Następna strona