Signification de ":" dans un code c++ [Résolu]

Messages postés
21
Date d'inscription
mardi 25 mai 2004
Dernière intervention
5 août 2014
- - Dernière réponse : mouad001
Messages postés
21
Date d'inscription
mardi 25 mai 2004
Dernière intervention
5 août 2014
- 5 août 2014 à 21:28
Bonjour,

je suis entrain de convertir un code c++ en c pour le compiler dans ma montre Pebble, mon problème est que je ne comprend pas la syntaxe d'une fonction ( le ':' utilisé après la déclaration de la fonction prayertimes):

PrayerTimes(CalculationMethod calc_method = Jafari,
			JuristicMethod asr_juristic = Shafii,
			AdjustingMethod adjust_high_lats = MidNight,
			double dhuhr_minutes = 0)
	: calc_method(calc_method)
	, asr_juristic(asr_juristic)
	, adjust_high_lats(adjust_high_lats)
	, dhuhr_minutes(dhuhr_minutes)
	{
		method_params[Jafari]  = MethodConfig(16.0, false, 4.0, false, 14.0);	// Jafari
		method_params[Karachi] = MethodConfig(18.0, true,  0.0, false, 18.0);	// Karachi
		method_params[ISNA]    = MethodConfig(15.0, true,  0.0, false, 15.0);	// ISNA
		method_params[MWL]     = MethodConfig(18.0, true,  0.0, false, 17.0);	// MWL
		method_params[Makkah]  = MethodConfig(19.0, true,  0.0, true,  90.0);	// Makkah
		method_params[Egypt]   = MethodConfig(19.5, true,  0.0, false, 17.5);	// Egypt
		method_params[Custom]  = MethodConfig(18.0, true,  0.0, false, 17.0);	// Custom
	}

pour le fichier complet :
http://praytimes.org/code/git/?a=viewblob&p=PrayTimes&h=5f43359fa9a38ac597acdf67a3589bee24fd64f0&hb=HEAD&f=v1/cpp/prayertimes.hpp

je me demande si cette syntaxe est vraie si oui, y-a-t'il quelu'un qui peut m'expliquer un peu de quoi il s'agit

merci par avance.
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
3830
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
30 janvier 2019
163
1
Merci
Bonjour.

Oui la syntaxe est bonne, c'est ce qu'on appelle une liste d'initialisation. C'est une bonne pratique et si tu fais du C++ sérieusement, tu n'utilises normalement que ça :).

Exemple:
MaClasse::MaClasse()
 : _attrib1(435), _attrib2("toto")
{
}


Équivaut (presque) à:

MaClasse::MaClasse()
{
  _attrib1 = 435;
  _attrib2 = "toto";
}


On se sert de la liste d'initialisation pour initialiser des attributs non initialisables sinon.

Exemple
class Toto
{
  int& _ref_i;
  const int _cst_i;
};

Toto::Toto(int i)
 : _ref_i(&i), _cst_i(i) // valide
{
}

Toto::Toto(int i)
{
  _ref_i = &i; // invalide, on ne peut modifier une ref par affectation
  _cst_i = i; // invalide, on ne peut modifier une valeur constante
}


Dans cette classe, on ne peut affecter de valeur à _ref_i et _cst_i que s'ils sont dans une liste d'initialisation. C'est la raison pour laquelle on initialise toujours des attributs avec une liste d'initialisation et jamais dans le corps du constructeur.

__________________________________________________________________________________________________
Améliorez votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 120 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cptpingu
Messages postés
21
Date d'inscription
mardi 25 mai 2004
Dernière intervention
5 août 2014
0
Merci
merci cptpingu,

tu me facilite la vie.

--------
mouad.
Commenter la réponse de mouad001

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.