![]() |
Índex |
Miguel A. Almarza
Departament d'Informàtica IES Mare de Deu de la Merce |
| Les dades static | |
#include <iostream.h>
class PruebaStatic
{
static int Metode;
public:
void PosaMetode(int n) {Metode=n;}
int TornaMetode() {return Metode;}
};
int PruebaStatic::Metode;
main()
{
PruebaStatic Objecte1, Objecte2;
Objecte1.PosaMetode(4);
cout << Objecte1.TornaMetode() << endl;
cout << Objecte2.TornaMetode() << endl;
}
|
Declarem la variable Metode com a membre static de la classe. Definim la variable Metode com a membre de la classe. Fem notar que és en el moment de la definició quan es fa reserva de memòria per a les dades d'una variable. |
| Accés a la variable amb l'operador d'àmbit :: | |
#include <iostream.h>
class PruebaStatic
{
public:
static int Metode;
void PosaMetode(int n) {Metode=n;}
int TornaMetode() {return Metode;}
};
int PruebaStatic::Metode;
main()
{
PruebaStatic Objecte1, Objecte2;
PruebaStatic::Metode = 45;
cout << Objecte1.TornaMetode() << endl;
cout << Objecte2.TornaMetode() << endl;
}
|
|
const int i = 27;
const double A[] = {3, 23, 12, 1, 45};
Veiem que assignem valor en el moment de declarar l'objecte ja que el fet de ser constant implica que no podem
assignar valor a aquests objectes al llarg del codi, i una instrucció com la següent
i = 14; //Error car i és constantdonarà un error en el moment de la compilació.
| Altres especificacions del qualificador const | |
| const char * p = "Hola" | L'objecte apuntat és constant |
| char * const p = "Hola" | El punter p és constant |
| const char * const p = "Hola" | El punter i l'objecte apuntat són constants |
| func_membre(Llista de paràmetres) const | La funció no pot variar l'objecte que l'ha cridada. |
| Maneig d'd'excepcions | |
#include <iostream.h>
main()
{
int error = 10;
try
{
cout << "Dentro del blque try" << endl;
if (error) throw error;
cout << "Esto se ejecuta si no hay error" << endl;
}
catch (int NumError)
{
cout << "Se ha producido el error " << NumError << endl;
}
}
|
|
| Programa que tracta errors de disc. | |
#include <fstream.h>
#include <stdlib.h>
int menu()
{
int opcio=-1;
while (opcio<0 || opcio>2)
{
cout << "0 Acabar" << endl << endl;
cout << "1 Esciure el fitxer" << endl;
cout << "2 Llegir el fitxer" << endl;
cin >> opcio;
}
return opcio;
}
main()
{
int opcio=-1;
while (opcio)
{
opcio = menu();
try
{
if (opcio==1)
{
ofstream fSortida("a:/fitxer04.dat");
if (!fSortida) throw 1;
fSortida << "Proba de fitxers amb ofstream" << endl;
fSortida << "i sense haver de declarar esplícitament un buffer." << endl;
fSortida.close();
}
else if (opcio==2)
{
char Frase[200];
ifstream fEntrada("a:/fitxer04.dat");
if (!fEntrada) throw 2;
fEntrada.getline(Frase,199,'\n');
cout << Frase << endl;
fEntrada.getline(Frase,199,'\n');
cout << Frase << endl;
fEntrada.close();
}
}
catch (int NumError)
{
if (NumError==1) cout << "No he pogut obrir el titxer per escriure. " << endl;
if (NumError==2) cout << "No he pogut obrir el titxer per llegir." << endl;
cout << "Error número = " << NumError << endl;
}
}
}
|
|
| Més d'un catch associat a un try. | |
void FuncProva(int x)
{
try
{
if (x) throw x;
else trow "Cadena llençada";
}
catch(int i)
{
cout << "Capturat el nombre sencer " << i;
}
catch(char * Cadena)
{
cout << "Capturada la cadena: " << Cadena;
}
}
|
|