Kurs C++ v2.0 rozdz. 16 Obsługa pliku p. Otwieranie pliku
Ostatnio zmodyfikowano 2010-10-12 13:41
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 ?
|
|
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. |
|
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"
#include <iostream> void dodaj_1( int * ); int main() { int x = 100; std::cout << x << "\n"; dodaj_1( & x ); std::cout << x << "\n"; return 0; } void dodaj_1( int * wsk ) { * wsk = * wsk + 1; }
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"?
|
|
F90M |
» 2010-10-11 12:34:49 #include <iostream> void dodaj_1( int * ); int main() { int x = 100; std::cout << x << "\n"; dodaj_1( & x ); std::cout << x << "\n"; return 0; } void dodaj_1( int * wsk ) { * wsk = * wsk + 1; }
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. |
|
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ć. |
|
pekfos |
» 2010-10-11 14:55:51 jak klas nie znasz to po co o ten temat zaczepiasz? class klasa { public: void metoda(); };
klasa obiekt; obiekt.metoda(); |
|
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. |
|
pekfos |
» 2010-10-11 15:04:44 #include <iostream> class hello { public: void hi() { std::cout << "Czesc, nazywam sie " <<( long ) this << "\n"; } };
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 |
|
« 1 » 2 |