PDA

Visualizza la versione completa : [C++] classi e membri/funzioni static


hfish
08-01-2005, 12:53
qual l'utilit di rendere un campo dato o una funzione membro static?? :dh:
mezz'ora che rileggo sempre lo stesso maledettissimo paragrafo ma nn mi sto ricogliendo! :cry:

anx721
08-01-2005, 14:02
Un campo statico di una classe ha la stessa funzionalita di una variaile gloale, cosi come una funzione statica ha le stesse funzionalita di una funzione globale, oltre al fatto che puo accedere ai memri non publici della classe. Il di utilizzare un membro statico piuttosto che una variabile o una funzione gloale sta nel fatto che un membro di una classe puo essere reso privato, e quindi non accesseile al di fuori della classe e inoltre per riferirsi al memro statico bisogna far riferimento alla classe:

NomrClasse::memro_statico

e quindi non c' possiilita di conflitto di nomi di altre variabili globali che hanno lo stesso nome, come racchiudere una dichiarazione in un namespace.

hfish
08-01-2005, 14:14
Originariamente inviato da anx721
Un campo statico di una classe ha la stessa funzionalita di una variaile gloale, cosi come una funzione statica ha le stesse funzionalita di una funzione globale, oltre al fatto che puo accedere ai memri non publici della classe. Il di utilizzare un membro statico piuttosto che una variabile o una funzione gloale sta nel fatto che un membro di una classe puo essere reso privato, e quindi non accesseile al di fuori della classe e inoltre per riferirsi al memro statico bisogna far riferimento alla classe:

NomrClasse::memro_statico

e quindi non c' possiilita di conflitto di nomi di altre variabili globali che hanno lo stesso nome, come racchiudere una dichiarazione in un namespace.
thanks...
anche se non ho capito la storia del namespace :stordita:

anx721
08-01-2005, 14:29
Originariamente inviato da hfish
thanks...
anche se non ho capito la storia del namespace :stordita:

Un namespace serve semplicemente a definire uno spazio di nomi in modo da evitare conlfitti di nomi; se ad esempio dichiari una funzione globale di nome f, per invocarla usi:

f();

se dichiari f all'interno del namespace ciccio, per invocare f() devi scrivere:

ciccio::f();

in questo modo puoi dichiarare piu funzioni globali di nome f(), basta metterle in diversi namespace. Se sei sicuro di non avere conflitti di nomi puoi invocare f() anche direttamente come f() ma inserendo all'inizio del file la dichiarazione:

using namespace ciccio;

che dice al compilatore che classi, variaili e funzioni definiti nello spazio di nomi ciccio saranno riferiti semplicemente con il loro nome, senza anteporre ciccio:: .

In c++ tutte le definizioni della standard template library avvengono nel namespace std; ad esempio per stampare di solito si usa cout:

cout << "ciao";

cout un oggetto definito nel namespace std, quindi per fare riferimento a cout bisognerebbe scrivere:

std::cout << "ciao";


Di solito infatti molti programmi c++ iniziano con:

using namespace std;

per evitare di dichairare ogni volta l'uso del namespace.

Loading