Petite question sur les constructeurs

  • Bozebo
  • Expert
  • Expert
  • Avatar de l’utilisateur
  • Inscription: Fév 15, 2006
  • Messages: 709
  • Loc: 404
  • Status: Offline

Message Janvier 18th, 2010, 4:12 am

Même si je suis en utilisant C + + pour cette question, le principe s'applique à tous sans doute langues POO.

Lorsque vous utilisez un constructeur, ou une méthode setter. Je me retrouve avec quelque chose comme ceci:
Code: [ Select ]
class gameObject{
 public:
 long x,y; //location

 gameObject(long setX,long setY){
  x = setX;
  y = setY;
 }
}
  1. class gameObject{
  2.  public:
  3.  long x,y; //location
  4.  gameObject(long setX,long setY){
  5.   x = setX;
  6.   y = setY;
  7.  }
  8. }

Ce que je fais est de prendre seulement les x et y passa par les arguments des constructeurs - est-il un moyen intelligent de le faire? Je n'aime pas ma façon et je soupçonne qu'il ya une meilleure façon, mais pas trop comment aborder quelqu'un et poser à ce sujet gif "alt =": D "title =" très heureux ">
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Janvier 18th, 2010, 4:12 am

  • UPSGuy
  • Lurker ಠ_ಠ
  • Web Master
  • Avatar de l’utilisateur
  • Inscription: Juil 25, 2005
  • Messages: 2735
  • Loc: Nashville, TN
  • Status: Offline

Message Janvier 18th, 2010, 6:33 am

Thats la manière correcte d'initialiser les variables en C + +. Certaines langues ont différentes façons de configurer par défaut ou la sténographie des moyens d'accomplir la même chose, mais c'est la solution étalon de l'OMI lisible.
I'd love to change the world, but they won't give me the source code.
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Inscription: Fév 10, 2004
  • Messages: 13455
  • Loc: Florida
  • Status: Offline

Message Janvier 18th, 2010, 7:12 am

Ive devenu un fan de constructeurs qui fixent les propriétés par défaut et exiger par exemple des changements spécifiques à apporter par les setters ou des opérateurs de propriété après l'instanciation.

Je trouve juste que beaucoup de fois mes objets utilisent beaucoup des mêmes arguments et en passant les arguments par défaut même pour les instanciations multiples devient un tracas.
Strong with this one, the sudo is.
  • Bozebo
  • Expert
  • Expert
  • Avatar de l’utilisateur
  • Inscription: Fév 15, 2006
  • Messages: 709
  • Loc: 404
  • Status: Offline

Message Janvier 18th, 2010, 8:18 am

joebert a écrit:
Ive devenu un fan de constructeurs qui fixent les propriétés par défaut et exiger par exemple des changements spécifiques à apporter par les setters ou des opérateurs de propriété après l'instanciation.

Je trouve juste que beaucoup de fois mes objets utilisent beaucoup des mêmes arguments et en passant les arguments par défaut même pour les instanciations multiples devient un tracas.


yeah ive a obtenu un peu sur le code élargi, qui est quelque chose comme:
Cenemy (long x, long y, la santé int = 10): CgameObject (x, y);
  • spork
  • Brewmaster
  • Silver Member
  • Avatar de l’utilisateur
  • Inscription: Sep 22, 2003
  • Messages: 6130
  • Loc: Seattle, WA
  • Status: Offline

Message Janvier 18th, 2010, 11:19 am

UPSGuy a écrit:
Thats la manière correcte d'initialiser les variables en C + +. Certaines langues ont différentes façons de configurer par défaut ou la sténographie des moyens d'accomplir la même chose, mais c'est la solution étalon de l'OMI lisible.

En fait, pas tout à fait.

Quand vous le faites de cette façon, vous prenez une étape inutile à chaque variable en créant d'abord la variable, l'initialiser à une valeur par défaut (généralement des ordures), puis réassigner une valeur nouvelle pour eux dans le corps du constructeur.

C + + est une construction qui vous permet d'initialiser des propriétés dans le constructeur d'une valeur au moment de la création:

CPP Code: [ Select ]
class GameObject {
 
private:
  long x, y;
 
public:
  GameObject();
 
};
  1. class GameObject {
  2.  
  3. private:
  4.   long x, y;
  5.  
  6. public:
  7.   GameObject();
  8.  
  9. };


CPP Code: [ Select ]
GameObject::GameObject(long initX, long initY)
  : x(initX), y(initY) {
 
  // nothing needed here
}
  1. GameObject::GameObject(long initX, long initY)
  2.   : x(initX), y(initY) {
  3.  
  4.   // nothing needed here
  5. }
The Beer Monocle. Classy.
  • UPSGuy
  • Lurker ಠ_ಠ
  • Web Master
  • Avatar de l’utilisateur
  • Inscription: Juil 25, 2005
  • Messages: 2735
  • Loc: Nashville, TN
  • Status: Offline

Message Janvier 18th, 2010, 11:35 am

Je savais wouldnt quelqu'un comme cette déclaration. Depuis trop longtemps depuis que j'ai joué dans CPP, si j'étais déjà embrassa sa création.
I'd love to change the world, but they won't give me the source code.
  • Bozebo
  • Expert
  • Expert
  • Avatar de l’utilisateur
  • Inscription: Fév 15, 2006
  • Messages: 709
  • Loc: 404
  • Status: Offline

Message Janvier 18th, 2010, 5:08 pm

Merci pour le Spork connaissances. I wouldnt dû connaître la réponse à celle des âges, si tu n'avais pas posté. :idea:
  • Tannu4u
  • Proficient
  • Proficient
  • Avatar de l’utilisateur
  • Inscription: Avr 29, 2004
  • Messages: 480
  • Loc: India
  • Status: Offline

Message Janvier 19th, 2010, 4:43 am

Qu'un i chose de nouveau appris aussi. Merci "Spork"
Amit
My Blog http://www.amityadav.name

Afficher de l'information

  • Total des messages de ce sujet: 8 messages
  • Utilisateurs parcourant ce forum: ScottG et 240 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC