|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Aug 2002
Messaggi: 3958
|
[c++] funzioni e classi
Ciao ragazzi,
vi sembrerà strano, pur avendo già affrontato le classi (a livelli base però) ho incontrato per la prima volta una sintassi in riferimento alle classi di questo genere: void Cliente::inserisci_nome( ) che significa una funzione di questo tipo e a che serve? io richiamo un metodo di una classe nel main utilizzando sempre il punto dopo avere instaziato l'oggetto (ho detto bene) che differenza c'è? grazie |
![]() |
![]() |
![]() |
#2 |
Bannato
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
|
L'operatore :: serve per dire "quello che viene dopo appartiene alla classe tal de tali".
Ad esempio si puo' utilizzare per definire un metodo fuori dalla dichiarazione della classe: Codice:
// in Foo.h class Foo { void metodo() { cout << "ciao" << endl; } }; Codice:
// in Foo.h class Foo { void metodo(); }; // in Foo.cpp void Foo::metodo() { cout << "ciao" << endl; } Quello della definizione dei metodo non e' l'unico uso possibile di ::, si puo' utilizzare anche per indicare un metodo per passarlo come parametro ( &Foo::metodo e' un puntatore al metodo ), oppure per metodi/campi "di classe", cioe' riferiti alla classe stessa e non ad una particolare istanza. In quest'ultimo caso un esempio potrebbe essere Codice:
class Foo { int id; public: static int next=0; Foo(); }; Foo::Foo() { id = next++; } /* bla bla */ int main() { Foo x,y,z; cout << Foo::next << endl; // stampa 3 } L'esempio principe e' quello della libreria standard, dove tutti gli elementi sono contenuti all'interno del namespace std. Per poter utilizzare il canale cout ad esempio, bisogna specificare che si trova in std: Codice:
std::cout << "Hello world" << std::endl; Codice:
using namespace std; cout << "Hello world" << endl; |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Altrimenti nell'accezione classica del C serve per accedere allo scope globale da uno scope locale (utile in caso di funzioni o variabili locali ad una classe aventi lo stesso nome di una globale)...
Codice:
int ciao = 0; int main() { int ciao = 23; cout << ciao << ::ciao << endl; Codice:
void f() { cout << "ciao1"; } class a { public: void f() { cout << "ciao2"; }; a() { f(); ::f();} }; |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:08.