Linguagem de Programação C++

Universidade Federal de Santa Catarina

Departamento de Engenharia Elétrica, CTC

Prof. Eduardo Augusto Bezerra

Profa. Cristiane Woszezenki


Declaração de classes em C++


A forma de declarar uma classe em C++ é a seguinte:


class nome_da_classe {
   rótulo_permissao_1:
      membro1;
   rótulo_de_permissao_2:
      membro2;
   ...
};


onde nome_da_classe é o nome para a classe (tipo definido pelo usuário). O corpo da declaração contém membros que podem ser dados (atributos) ou métodos; e rótulos de permissão que podem ser quaisquer uma das três palavras chaves: private:, public: ou protected:.

Exemplo:

class Retangulo {
   private:
      int x, y;
   public:
      void atribuiValores(int,int);
      int area (void);

};


Exemplo de um programa OO em C++

//exemplo de um programa OO em C++
#include <iostream>
using namespace std;

class Retangulo {
   private: 
      int x, y;
   public:
      void atribuiValores(int,int);
      int area (void);
};
void Retangulo::atribuiValores (int a, int b) {
   x = a;
   y = b;
}
int Retangulo::area (void){
   return x*y;
}
int main () {
   Retangulo ret;      //objeto ret – instancia da classe Retangulo
   ret.atribuiValores (3,4);
   cout << "area: " << ret.area();
   return 0;
}


Construtores

Objetos, quando criados, geralmente precisam inicializar suas variáveis. Por exemplo, o que aconteceria se no exemplo anterior, se o método área fosse chamado antes de atribuiValores? Provavelmente um resultado indeterminado, uma vez que não foram atribuídos quaisquer valores para os dados membros x e y.

Exemplo:

//exemplo de construtor

//

#include <iostream>
using namespace std;

class Retangulo {
   private:
      int x, y;
   public:
      Retangulo (int,int);
      int area (void) 
};
Retangulo::Retangulo (int a, int b) {
   x = a;
   y = b;
}
int Retangulo::area (void){
   return x*y;
}
int main () {
   Retangulo ret1 (3,4);
   Retangulo ret2 (5,6);
   cout << "area de ret1: " << ret1.area() << endl;
   cout << "area de ret2: " << ret2.area() << endl;
}


Em classes que não possuem um construtor declarado explicitamente, será gerado um trecho de código pelo compilador para implementação do construtor ("construtor default implícito").