176 votes

Mot-clé automatique C++. Pourquoi est-il magique ?

De tout le matériel que j'ai utilisé pour apprendre le C++, auto a toujours été un spécificateur de durée de stockage bizarre qui ne servait à rien. Mais tout récemment, j'ai rencontré du code qui l'utilisait comme un nom de type en soi. Par curiosité, je l'ai essayé, et il prend le type de ce que je lui attribue !

Soudain, les itérateurs STL et, en fait, tout ce qui utilise des templates est dix fois plus facile à écrire. J'ai l'impression d'utiliser un langage "amusant" comme Python.

Où est passé ce mot-clé pendant toute ma vie ? Allez-vous briser mes rêves en disant que c'est exclusif à Visual Studio ou que ce n'est pas portable ?

22 votes

Ce n'est pas magique. C'est nouveau ( oh noes, quel mauvais jeu de mots ). Maintenant, l'asynchronisme est l'avenir ( halètement )

2 votes

Voici la référence sur les mots-clés automobiles fr.cppreference.com/w/cpp/language/auto

6voto

rahul goyal Points 71

Le mot clé auto spécifie que le type de la variable déclarée sera automatiquement déduit de son initialisateur. Dans le cas des fonctions, si leur type de retour est auto, il sera évalué par l'expression du type de retour au moment de l'exécution.

Cela peut être très utile lorsque nous devons utiliser l'itérateur. Par exemple, pour le code ci-dessous, nous pouvons simplement utiliser "auto" au lieu d'écrire toute la syntaxe de l'itérateur.

int main() 
{ 

// Initialize set 
set<int> s; 

s.insert(1); 
s.insert(4); 
s.insert(2); 
s.insert(5); 
s.insert(3); 

// iterator pointing to 
// position where 2 is 
auto pos = s.find(3); 

// prints the set elements 
cout << "The set elements after 3 are: "; 
for (auto it = pos; it != s.end(); it++) 
    cout << *it << " "; 

return 0; 
}

C'est ainsi que nous pouvons utiliser le mot-clé "auto".

4voto

Jason Points 20479

Cela dit, bien qu'il s'agisse d'un outil merveilleux pour simplifier les déclarations d'objets et nettoyer la syntaxe de certains paradigmes d'appel (par exemple, les boucles for basées sur la plage), il ne faut pas en abuser :-)

0voto

rodeone2 Points 23

Sa magie réside dans sa capacité à réduire la nécessité d'écrire du code pour chaque type de variable passée dans des fonctions spécifiques. Considérez une fonction print() similaire à Python dans sa base C.

#include <iostream>
#include <string>
#include <array>

using namespace std;

void print(auto arg) {
     cout<<arg<<" ";
}

int main()
{
  string f = "String";//tok assigned
  int x = 998;
  double a = 4.785;
  string b = "C++ Auto !";
//In an opt-code ASCII token stream would be iterated from tok's as:
  print(a);
  print(b);
  print(x);
  print(f);
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X