Qu'est-ce que C++moderne?
J'ai parfois lu la discussion sur le pourquoi du C++ qui est bon ou mauvais, et parfois l'un des arguments de la cites qui, aujourd'hui, du C++ moderne est très différente de l'ancienne C++. Je suis vous vous demandez quelle est la différence serait? Ce serait un exemple de "moderne" du C++ et ce serait un exemple (de préférence en faisant la même chose) de ce "vieux" C++?
- Sans réel de citations ou de références, il est difficile de savoir exactement de quoi vous parlez. Pouvez-vous fournir un lien ou une référence, donc nous savons ce que vous lisez?
Vous devez vous connecter pour publier un commentaire.
L'utilisation Extensive de la bibliothèque standard et STL, les exceptions et les modèles plutôt que de simplement C avec des classes
"Moderne" C++ n'a pas peur d'utiliser l'un ou tous les éléments suivants:
"Vieux" C++ a tendance à éviter ces choses en raison de la perception d'un manque de prise en charge du compilateur ou de l'exécution de la performance. Au lieu de cela, vous trouverez...
new
etdelete
std::string
Comme avec tous ce-vs-que les arguments, il y a avantage à les deux approches. C++ moderne n'est pas universellement mieux. Intégré enviornments, par exemple, nécessitent souvent des restrictions supplémentaires que la plupart des gens n'ont jamais besoin, de sorte que vous verrez beaucoup de style ancien code. Mais dans l'ensemble, je pense que vous trouverez que la plupart des fonctionnalités modernes valent régulièrement. La Loi de Moore, et le compilateur améliorations ont pris soin de la plupart des raisons pour éviter de nouvelles choses.
find
méthode PAS à trouver un résultat.Un très évidente différence est que dans le "old-style" C++, vous pourrez voir beaucoup d'objets créés manuellement avec
new
et détruit avecdelete
. En C++ moderne, un objet est créé sur la pile à chaque fois que possible, ou, au moins, enveloppé dans une sorte de pointeur intelligent.Une autre différence est que le vieux style C++ se concentre plus sur la programmation orientée objet, tandis que le C++ moderne utilise un mélange de styles de programmation: procédure, modulaire, de l'objet, et le générique. Gratuit fonctions sont considérées comme une bonne chose en C++ moderne, alors qu'il serait poussé dans un peu de classe dans le vieux style C++.
Autres différences évidentes comprennent l'utilisation des constructions et des bibliothèques, qui est devenu mature et assez stable pour être utilisée dans le code de production: les modèles, les exceptions, les espaces de noms, STL, etc.
Il ya des choses différentes en C++, qui sont considérés comme moderne.
Tout d'abord, je pense, c'est l'extraordinaire avènement de modèles. Non seulement la STL lui-même, mais aussi les moins "ordinaire" qui utilise des modèles qui ont conduit à l'élaboration du modèle de méta-programmation. Note par exemple la présence de
enable_if
dans la prochaine version de la norme.C'est la plus remarquable caractéristique je pense à un mouvement parmi programmeur C++ qui cherchent à faire respecter l'exactitude de la construction:
void*
Cette recherche de haute qualité a également conduit à une utilisation généralisée de:
L'examen de ces bibliothèques sont également démontrer que les programmeurs en C++ qui n'ont plus de complexe d'infériorité à l'égard de ceux OO langues: maintenant libéré de ce complexe, nous n'hésitons pas à mélanger différents paradigmes (OO, générique, de la procédure) pour atteindre notre but.
Dans l'ensemble, je pense que C++ Moderne est plus un état d'esprit. Nous (les programmeurs en C++) essayer de nous libérer de la redoutable comportement indéfini qui nous tourmente depuis si longtemps, et tenter de les libérer nos utilisateurs de celui-ci (par la définition des interfaces qui ne le permettent pas). Nous avons également accepter le fait que d'autres les ont précédés, et que la réutilisation des bibliothèques existantes n'est PAS un signe de faiblesse.
La Page Wikipedia sur la nouvelle norme C++ n'est pas un mauvais départ pour la lecture sur nouveaux C++.