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