Jump to content
Sign in to follow this  
Bernardo Vieira

É correto? Ou não deve ser assim? ( Class )

Recommended Posts

Bernardo Vieira

Bom, eu uso C++ para desenvolvimentos de plugin para um server MultiPlayer e é necessario o parametro playerid como devem imaginar. Entao, até agora eu usava struct, mas como estou a usar C++ e também ainda estou a aprender decidi usar class (estou a estudar orientacao a objecto, mas nao sei quase nada ou nada ainda) e por isso vim fazer duas perguntas

1 - aconcelham-me a usar class como no exemplo abaixo ou devo usar struct e depois aquelas funcoes ( onde coloca os valores e multiplica ) colocar noutra parte do codigo ?

2 - eu fiz um pequeno teste para ver se funcionava correto, bom, funinou, mas eu tenho uma duvida, o MAX eu posso usar ali ou fará problemas com outros valores por só criar um cubo uma vez (Cubo teste1[MAX]) ?

#include <iostream>

#define MAX 50

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

class Cubo {
private:
 int largura;
 int altura;

public:
 Cubo() {
   Apagar();
 }

 ~Cubo() {
   Apagar();
 }

 void setLargura(int l) {
   largura = l;
 }

 void setAltura(int a) {
   altura = a;
 }

 int multiDim(void) {
   return (largura * altura);
 }

 void Apagar() {
   altura = 0;
   largura = 0;
 }
};

int main() {
 Cubo teste1[MAX];

 cout << teste1[0].multiDim() << endl;

 teste1[0].setAltura(5);
 teste1[0].setLargura(5);
 cout << teste1[0].multiDim() << endl;

 teste1[0].~Cubo();

 teste1[1].setAltura(6);
 teste1[1].setLargura(6);
 cout << teste1[0].multiDim() << endl;
 cout << teste1[1].multiDim() << endl;

 teste1[45].setAltura(10);
 teste1[45].setLargura(10);
 cout << teste1[0].multiDim() << endl;
 cout << teste1[1].multiDim() << endl;
 cout << teste1[45].multiDim() << endl;

 system("pause");
 return 1;
}

PS. desculpem por isto nao estar espaçado, é culpa da pagina, eu aqui tenho tudo correto!

Edited by Rui Carlos

Share this post


Link to post
Share on other sites
pikax
1 - aconcelham-me a usar class como no exemplo abaixo ou devo usar struct e depois aquelas funcoes ( onde coloca os valores e multiplica ) colocar noutra parte do codigo ?

Em C++ a UNICA diferenca entre uma class e uma struct e' que a class por defeito os membros sao privados e a struct sao publicos.

No construtor podes inicializar as variaveis:

Cubo(): largura(0), altura(0){}

2 - eu fiz um pequeno teste para ver se funcionava correto, bom, funinou, mas eu tenho uma duvida, o MAX eu posso usar ali ou fará problemas com outros valores por só criar um cubo uma vez (Cubo teste1[MAX]) ?

Podes usar, se te for mais pratico para ti. Nao estas a criar um cubo de cada vez, estas a criar(neste caso) 50 Cubos de uma so' vez.

  • Vote 1

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
Bernardo Vieira

Em C++ a UNICA diferenca entre uma class e uma struct e' que a class por defeito os membros sao privados e a struct sao publicos.

ahh bom, sim, por acaso reparei que mesmo sem usar private: as variaveis eram privadas sim!

No construtor podes inicializar as variaveis:

Cubo(): largura(0), altura(0){}

ah sim, também pesquisei sobre como inicializar os valores e vi isso. Obrigado :)

Podes usar, se te for mais pratico para ti. Nao estas a criar um cubo de cada vez, estas a criar(neste caso) 50 Cubos de uma so' vez.

ahhh, exato exato, era isso que eu queria saber, se estava a criar 50 cubo ou se estava a criar só um partido em 50 partes e isso daria problema. Bom, eu achei que estava a criar 50 cubos, mas para nao ficar duvida

bom, era isso

Muito obrigado :)

Edited by Bernardo Vieira

Share this post


Link to post
Share on other sites
pmaa

Em C++ a UNICA diferenca entre uma class e uma struct e' que a class por defeito os membros sao privados e a struct sao publicos.

Não só: a herança de uma struct é por defeito pública e a de uma classe é por defeito privada:

struct Derivada:Base

é equivalente a

class Derivada:public Base

É por isso que os mais preguiçosos tendem a usar structs ... sim uso sempre structs.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.