8 C ++ caractéristiques pas-si-débutants

Le langage C ++ contient tellement de fonctionnalités que les programmeurs débutants peuvent pas comprendre tout le monde. Heureusement, vous ne devez maîtriser toutes les fonctionnalités de la langue pour écrire, grands programmes dans le monde réel. Après dix sont des fonctionnalités que vous pouvez regarder en avant à, juste au cas où vous les voyez dans les programmes d'autres personnes.

Sommaire

La commande goto C ++ de

Cette commande va tout le chemin du retour à C, l'ancêtre de C ++. En principe, l'aide de cette commande est facile. Vous pouvez placer goto étiquetage partout où vous voulez. Lorsque C ++ vient à travers cette commande, le contrôle passe immédiatement à l'étiquette, comme démontré dans ce bout de code:

 pour (-) {if (expression conditionnelle) {goto outahere -} // ... ce que vous voulez ...} outahere: // ... programme continue ici ...

En pratique, toutefois, aller à introduit un grand nombre de façons de bousiller. En tout cas, il n'a pas fallu longtemps avant que les programmeurs ont remarqué que les deux utilisations les plus courantes de la aller à devaient quitter boucles et d'aller à la prochaine affaire dans une boucle. Le Comité C Normes introduit pause et continuer et presque complètement éliminé la nécessité de la aller à commande.

L'opérateur ternaire C de

La opérateur ternaire est un opérateur unique de C et C ++. Il fonctionne de la manière suivante:

int n = (conditionnelle)? expression1: expression2-

La ? opérateur évalue d'abord la conditionnel. Si la condition est vraie, alors la valeur de l'expression est égale à la valeur de expression1- sinon, il est égal à la valeur de expression2.

Par exemple, vous pourriez mettre en œuvre une maximum () fonction comme suit:

int max (int n1, n2 int) {return (n1> n2)? n1: N2-}



L'opérateur ternaire peut être appliquée à tout type de numérique mais ne peut pas être surchargé. L'opérateur ternaire est vraiment une expression - pas une instruction de contrôle comme un si.

Les types énumérés en C ++

L'idée simple est que vous pouvez définir des constantes et laissez C ++ leur attribuer des valeurs, comme indiqué ici:

ENUM Couleurs {noir, bleu, vert, jaune, rouge} -Couleurs myColor = BLACK-

Le problème avec les types énumérés réside dans la mise en œuvre: Plutôt que de créer un vrai type, C ++ utilise des entiers. Dans ce cas, BLACK est attribué la valeur 0, BLEU est assigné 1, Green2, et ainsi de suite.

La bibliothèque standard C ++ 2011 pour “ fixe ” ce problème en créant un type de classe énumérée comme le montre l'extrait suivant:

classe d'énumération Couleurs {BLACK, bleu, vert, jaune, rouge} -colors MyColor = Couleurs :: BLACK-

Dans cette version, Couleurs est un nouveau type. Chacune des constantes, BLACK, BLEU, et ainsi de suite, sont membres de Type Couleurs. Vous pouvez toujours jeter un objet de la classe Couleurs dans une int, mais une conversion implicite est pas autorisé.

Les espaces de noms C de

Il est possible de donner différentes entités dans deux banques différentes du même nom. Par exemple, la Note () fonction au sein du Étudiant bibliothèque attribue probablement une année, alors que le Note () fonction au sein du Génie civil bibliothèque peut définir la pente sur le flanc d'une colline. Pour éviter ce problème, C ++ permet au programmeur de placer son code dans un espace de noms séparé. Ainsi, le niveau à l'intérieur de la Étudiant namespace est différente de la qualité au sein de Génie civil.

L'espace de noms est au-dessus et au-delà le nom de classe. La Note () fonction membre de la classe Bulldozer dans le Génie civil namespace a le nom étendu CivilEngineering :: :: Bulldozer année ().

Tous les objets et fonctions de la bibliothèque sont dans l'espace std. La déclaration au début du modèle de programme à l'aide namespace STD dit que si vous ne voyez pas l'objet spécifié dans l'espace de noms par défaut, puis aller regarder dans std.

Fonctions virtuelles pures en C ++

Vous ne devez pas définir une fonction déclarée virtuelle. Une telle fonction définie est connu comme un fonction membre virtuelle pure. À ce moment, cependant, les choses se compliquent. Par exemple, une classe avec un ou plusieurs des fonctions virtuelles pures est dit être abstraite et ne peut être utilisé pour créer un objet. Aborder ce sujet après vous vous sentez à l'aise avec les fonctions virtuelles et la liaison tardive.

Le C de la classe de chaîne

La plupart des langues comprennent un chaîne classe comme un type intrinsèque pour la manipulation des chaînes de caractères facilement. En théorie, la classe de chaîne devrait faire de même pour C ++. Dans la pratique, cependant, il est pas si simple. Car chaîne est pas un type intrinsèque, les messages d'erreur que le compilateur génère quand quelque chose va mal sont plus comme ceux qui sont associés avec les classes définies par l'utilisateur. Pour un débutant, ces messages peuvent être très difficiles à interpréter.

chaîne est même pas une classe. Il est une instance d'une classe de modèle. Les messages d'erreur peuvent être à couper le souffle.

L'héritage multiple en C ++

Une classe peut effectivement étendre plus d'une classe de base. Cela semble simple, mais peut devenir très compliqué lorsque les deux classes de base contiennent des fonctions de membres du même nom. Même pire est lorsque les deux classes de base sont eux-mêmes sous-classes d'une classe commune.

En fait, de sorte que les nombreux problèmes se posent C ++ est la seule langue de type C qui prend en charge l'héritage multiple. Java et C #, les deux langues dérivées du C ++, a décidé d'abandonner le soutien pour l'héritage multiple.

C ++ des modèles et de la Standard Template Library

Les fabricants de C ++ remarqué comment des fonctions similaires comme celle-ci sont:

int max (int n1, n2 int) {if (n1> n2) {return N1- N2}} return à double max (n1 à double, double n2) {if (n1> n2) {return N1- N2}} return caractères max (char n1, n2 omble) {if (n1> n2) {return N1- N2}} return

“ ne serait pas cool, n ° 148; on dit à l'autre, “? Si vous pouvez remplacer le type avec un pseudo-type T que vous pourriez définir au moment de la compilation ” Avant de vous le savez, presto - modèles deviennent une partie de C ++:

modèle  T max (T t1, t2 T) {if (T1> T2) {return t1-} return t2-}

Maintenant, le programmeur peut créer un max (int, int) par substitution, T avec int et compiler le résultat, créer un max (doubles, doubles) par substitution, T avec double, et ainsi de suite. Le Comité de normalisation, même libéré toute une bibliothèque de classes, connu sous le nom Standard Template Library (STL pour faire court), basé sur des classes de modèle.

Pour un débutant, cependant, le sujet des classes de modèle commence à être syntaxiquement très compliqué. En outre, les erreurs que le compilateur génère quand vous obtenez un mauvais modèle d'instanciation sont ahurissant à un expert, jamais l'esprit d'un débutant. Ceci est certainement un sujet qui a besoin d'attendre jusqu'à ce que vous sentez à l'aise avec la langue de base.


» » » » 8 C ++ caractéristiques pas-si-débutants