C++
Home

Classes Parte 2

Copia de Membros por default

Os valores de uma classe podem ser copiados para outras classes, desde que a classe que irá receber os valores seje do mesmo tipo. Esse comando é executado membro por membro.

Observeção: É perigoso copiar membros quando as classes contém dados alocados dinamicamente.

Exemplo de copia:

#include <iostream>

using std::cout;
using std::cin;
using std::endl;

class date
{
   public:
   date( int d = 1, int m = 1, int y = 1990 );
   void imprime();

   private:
   int day, month, year;
};

date::date( int d, int m, int y ) // construtor
{
   day = d;
   month = m;
   year = y;
}

void date::imprime()
{
   cout << day << "/" << month << "/" << year << endl;
}

int main()
{
   date hoje( 20, 4, 2004), branco;
   // hoje é iniciado e branco fica com 0;

   hoje.imprime();
   branco.imprime();

   branco = hoje; // Atribuição por copia de membros

   branco.imprime();

   cin;
  
return 0;
}


Classes por referência

Podemos acessar variáveis ou funções de classes em funções normais passando as classes por referencia.
Ainda assim, não podemos acessar váriaveis privadas e nem funções privadas.

#include <iostream>

class numero {
private:
   int num;

public:
   numero();            // construtor
   void add();
   void imprimir();
};

numero::numero()
{
   num = 0;
}

void numero::add()
{
   num += 1;
}

void numero::imprimir()
{
   std::cout << num << std::endl;
}

void mais( numero & ); // prototipo de função global, que recebe a classe como um tipo

int main()
{
   numero contador;

   contador.imprimir();
   contador.add();
   contador.imprimir();

   mais( contador );

   std::cin;

   return 0;
}

void mais( numero &classe )
{
   classe.imprimir();
   classe.add();
   classe.imprimir();
}

 

Perguntas??? Email