CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Initialisateurs de mebres...

lag-it
lag-it
Niveau 10
08 juillet 2003 à 17:06:51

Quel(s) intérêt(s) présente l´utilisation d´initialisateurs de membre dans un constructeur pour initialiser des membres de données non const ?

lag-it
lag-it
Niveau 10
08 juillet 2003 à 17:21:50

Tant que j´y suis : A quoi servent les décalartions préliminaires ( class NomDeClasse ) dans un fichier en-tête avec pour membre de donné des objets issus de la classe préliminairement déclarée ( ca veut plus rien dire :-))) ) . Je sais qu´on s´en sert pour les classes proxy, mais ne vaut il pas mieux inclure le fichier en-tête de la classe ?

lag-it
lag-it
Niveau 10
08 juillet 2003 à 17:40:27

Eh bin ca se bouscule pas au portillon :-)))
( Bon pour la question 2, j´ai vu que ca empechait les intclusions circulaires, mais je rest sur ma faim :)

Kouic
Kouic
Niveau 9
08 juillet 2003 à 18:15:40

Ba, en fait les liste d´initialisation de constructeur ne servent que pour les données membre constante ou reference. Le reste peux etre initialiser dans le constructeur normalement.

Declarer le nom de la classe peux etre utile si par exemple tu souhaites utiliser la classe avant de la declarer, utile si tu met dans le meme . h une structure utilisant une classe que tu definies apres... je sais pas si je m´explique bien la :)

Et . .. heuuu, c´est quoi une classe proxy ?

Lightness1024
Lightness1024
Niveau 10
08 juillet 2003 à 19:00:32

pour les initialisations:

au départ dans tes membres ya ke des débris de mémoire, i.e. n´importe koi.

exemple tu veux faire ca:

ta une classe myclass
dedans ya un membre type LPTSTR file1

plus tard dans le code tu fais ca:
file1 = new TCHAR[_MAX_FNAME];
if ( file1 == NUMLL)
// gestion de l´erreur

et ben ta interet a avoir initialisé ton membre file1 a NULL pour pouvoir faire cette vérification !

lag-it
lag-it
Niveau 10
08 juillet 2003 à 19:05:06

Kouic > Une classe proxy te permet de masquer toutes les données membres et les fonctions membres private d´une classe ( pour les garder secrète à l´utilisateur).
Consulte ton manuel car c´est un peu long.

Lightness > Oui mais dans ce cas, pourquoi ne pas mettre les initialisation dans le corps du constructeur ?

Donc en fait ca ne sert ( réellement) que pour les membres de données constants et les références ?

Lightness1024
Lightness1024
Niveau 10
08 juillet 2003 à 19:28:35

comment ca ? on fait tjs nos init dans les constructeurs, ou tu veux ke ca soit d´autre ?
explique en fait c pas bien clair tout ca.

lag-it
lag-it
Niveau 10
08 juillet 2003 à 20:06:21

Un initialisateur de membre c´est bien ca :

NomClasse::Consrtucteur( . . ) : Initialisateur1( . .), . ..

Alors moi je demande pourquoi ( pour des données autres que const ) on met pas les initialisateur pour les variables " normales" dans le corps du constructeur ( entre les deux { } ) .

Kouic
Kouic
Niveau 9
08 juillet 2003 à 20:15:00

lag-it: Ok ! !! Je ne connaissais pas ce therme, en fait c´est juste pour cacher le code via une classe derivée... mais j´ai une excuse, je suis pro-opensource ; )

hs_dino
hs_dino
Niveau 9
08 juillet 2003 à 20:34:28

Pour les déclarations préliminaires, j´y vois surtout un interet à la compilation.
Systématiquement, je fais autant que possible pour avoir dans mon . h des déclarations préliminaires pour éviter d´avoir à inclure le fichier . h qui contient la déclaration.

Exemple:

:d) Toto.h:
class KToto
{
public:
KToto() {}
};

:d) Titi.h
class KToto;
class KTiti
{
protected:
KToto* m_pToto;

public:
KTiti();
};

:d) Titi.cpp

  1. include " toto.h"
  2. include " titi.h"

KTiti:KTiti()
{
m_pToto = NULL;
}

Ainsi, tout les fichiers qui incluront titi.h ne seront pas recompilé si je modifie toto.h
Biensur, ca peut sembler n´avoir guere d´interet au début, mais je vous garantie qu´avec un projet qui commence à grossir on fini par y apprecier le temps de compilation gagné. Moi perso, mon projet prend 10min de compilation, heureusement, gràçe a cette technique je peux modifier mes . h sans tout recompiler a chaque fois. Mais bon, après c´est une question de philosophie...

:d) Dino
:d) The Zythum Project
:d) http://www.zythum-project.com

lag-it
lag-it
Niveau 10
08 juillet 2003 à 20:42:51

L´usage des déclarations préliminaire est donc préférable.
Merci à tous :)

Lightness1024
Lightness1024
Niveau 10
09 juillet 2003 à 12:49:06

hey Dino les boutons de ton site ne marchent pas sous mozilla !

Altonfrere
Altonfrere
Niveau 10
09 juillet 2003 à 20:15:38

hé Dino, tu connais les precompiled headers ? ca accélère grandement les compils ! peut être même plus que ce que tu viens de présenter . ..

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment