2010-06-03 4 views
1

D'une certaine manière, je n'ai jamais remarqué jusqu'à aujourd'hui que C++ supporte les classes imbriquées. Cela m'a surpris parce que lorsque j'apprenais le C++ dans les années 90, je me suis souvenu que les classes imbriquées étaient quelque chose que Object Pascal et Java avaient, mais pas C++. J'ai demandé à un vieux programmeur à ce sujet et il a reconnu qu'il se souvenait que le C++ n'avait pas de classes imbriquées.Quand C++ a-t-il obtenu des classes imbriquées?

Est-ce que mon souvenir de C++ ne comporte pas de classes imbriquées ou est-ce qu'elles ont été ajoutées à la norme à un moment donné au cours des quinze dernières années? J'ai essayé de rechercher des informations sur Google sur ce sujet et je n'ai pas encore trouvé quelque chose d'utile.

Il se pourrait aussi que je pense à des fonctions imbriquées, ce que Pascal supporte certainement mais pas C.

+0

Juste d'intérêt, ce qui est si grand au sujet des classes imbriquées? – radman

+0

Ils sont magiques et vous pouvez faire des choses vaudou avec eux! – halfdan

+0

Je doute qu'ils soient "géniaux" mais si vous voulez avoir un type qui n'est utilisé que dans une classe spécifique, c'est comme cela que vous pouvez clairement l'appliquer et le communiquer à d'autres programmeurs. Ils peuvent également intéresser les geeks de la syntaxe linguistique. – Parappa

Répondre

3

Des classes imbriquées ont été ajoutées dans CFront 3.0, publiées dans 1993.

EDIT Il remonte même plus tôt, comme vous pouvez le voir dans le table of contents-The Annotated C++ Manuel de référence (1990).

+2

1993 ramène tant de souvenirs, mais les classes imbriquées n'en font pas partie. – dreamlax

+0

Ce cul de pied, merci! – Parappa

3

ont-ils été effectivement ajouté à la norme à un moment donné dans le passé quinze années?

C++ a d'abord été normalisé dans 1998 et cette norme incluait les classes imbriquées dans la section 9.7. Puisque vous parlez au début des années 90 dans votre question, il est tout à fait possible que quel que soit le compilateur que vous utilisiez à ce moment-là ne fournissait pas de support pour eux. Donc, la Classe Nested a été officiellement supportée à partir de 1998 mais elle aurait pu être disponible (selon votre compilateur) à tout moment avant, comme mentionné dans la réponse de Ken Bloom.

5

Selon « Une histoire de C++: 1979-1991 » par Bjarne Stroustrup

Plus tard, après de nombreux problèmes techniques et beaucoup de mécontentement des utilisateurs, niché champs de classe ont été réintroduits dans C++ 1989 [Ellis, 1990].

voir page 28 http://www.research.att.com/~bs/hopl2.pdf

Questions connexes