Bonjour !
J'ai une question � vous poser :
J'ai vu qu'en C++ il y a deux mani�res de d�clarer une variable : Type Nom (valeur); et Type Nom = Valeur; quelle est la diff�rence y en a t'il une mieux que l'autre ?
Bonjour !
J'ai une question � vous poser :
J'ai vu qu'en C++ il y a deux mani�res de d�clarer une variable : Type Nom (valeur); et Type Nom = Valeur; quelle est la diff�rence y en a t'il une mieux que l'autre ?
En fait il n'y a pas de diff�rence, la d�claration de la variable en elle-m�me est "Type Nom" et rien d'autre.
Par contre, ce qu'on passe entre parenth�ses ou apr�s le signe �gal �a permet de faire une initialisation, qui est une notion diff�rente de la d�claration.
En pratique, il n'y a pas de grande diff�rence entre utiliser des parenth�ses et le signe �gal. Les deux sont des initialisations. L'avantage des parenth�ses est qu'on peut passer plus d'un argument au constructeur. Le d�savantage c'est ce genre de choses :
MaClasse monObjet();
qui, pour un lecteur humain, est une d�claration (et initialisation) de monObjet de type MaClasse, alors que pour le compilo c'est une d�claration de fonction. (C'est pourquoi dans ce cas on va pr�f�rer MaClasse monObjet; )
Il faut aussi noter que l'initialisation avec le signe "=" est diff�rente de l'affectation.
Y'a quelques d�tails tricky � part �a mais rien de bien int�ressant.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7 Type nom(); // déclaration de la fonction nom qui renvoie un Type Type nom; // appel de Type::Type() Type nom = Type(2); // appel de Type::Type(int) puis Type::Type(Type&&) --> optimisé par le compilo Type nom(2); // appel de Type::Type(int) Type nom = 2; // appel de Type::Type(int) nom = 3; // appel de Type::operator= (int), affectation
merci beaucoup de ta r�ponse !
Partager