Maison > Article > développement back-end > connaissances de base en c++
Bases du C++
C++ est un langage intermédiaire développé par Bjarne Stroustrup chez Bell en 1979 Conception et développement commencé en laboratoire. C++ étend et améliore encore le langage C et est un langage de programmation orienté objet. C++ fonctionne sur diverses plates-formes, telles que Windows, les systèmes d'exploitation MAC et diverses versions d'UNIX. Le langage C est un langage orienté processus, et C++ ajoute des mécanismes de programmation orientés objet et génériques sur cette base. Par conséquent, C++ est plus adapté au développement de programmes de grande et moyenne taille. Cependant, le C++ ne sacrifie pas l’efficacité si vous n’utilisez pas de fonctionnalités avancées, son efficacité est presque la même que celle du langage C.
Étude recommandée : Tutoriel manuel c++
Ce qui suit est un résumé des connaissances de base du c++, j'espère qu'il vous sera utile.
1. Quels sont les types de données de base en C++ ?
Réponse : 3 types : entier, virgule flottante, vide.
2. Il existe plusieurs formes d'entiers. Quelles sont les différences entre les différentes formes ?
Réponse : Les entiers incluent les types arithmétiques d'entiers, de caractères et de valeurs booléennes, qui sont subdivisés en 13 formes selon les modificateurs. Les principales différences se reflètent dans le nom du type, la longueur et la plage de représentation.
3. Quelles sont les constantes en C++ ?
Réponse : 6 types de constantes : constantes entières, constantes à virgule flottante, constantes de caractères, constantes de chaîne, constantes de caractères échappés et constantes d'adresse.
4. Quelles sont les différences entre les constantes et les variables ?
Réponse : (1) La valeur d'une constante ne peut pas être modifiée, mais la valeur d'une variable peut être modifiée ; (2) Les constantes doivent être initialisées lorsqu'elles sont définies, mais les variables n'ont pas besoin d'être modifiées ; à initialiser lorsqu'elles sont définies ; (3) Les constantes ne peuvent pas être trouvées. L'adresse ne peut être attribuée qu'à un pointeur de constante et les variables peuvent être adressées ; (4) Les constantes ont une efficacité de compilation et d'exécution plus élevée ; 🎜>5. Quelles sont les classifications des opérateurs ?
Réponse : (1) Selon les opérandes : opérateurs unaires, opérateurs binaires, opérateurs ternaires ; (2) Selon les fonctions : opérateurs arithmétiques, opérateurs relationnels, opérateur d'opérations logiques, opérateur bit, affectation opérateur, opérateur d'incrémentation et de décrémentation, opérateur de flèche, opérateur conditionnel, opérateur sizeof, opérateur virgule.
6. Quelle est la différence entre la pré-opération et la post-opération de l'auto-augmentation et de l'auto-diminution ?
Réponse : La priorité de la première opération d'incrémentation et d'auto-décrémentation est supérieure à l'opérateur d'affectation (=), la priorité de la dernière opération d'incrémentation et d'auto-décrémentation est inférieure à l'opérateur d'affectation, et l'expression après cette dernière opération d'incrémentation et d'auto-décrémentation est La valeur de la formule ne changera pas.
7. Quelle est la différence entre l'incrément et la décrémentation des pointeurs et des variables ?
Réponse : L'incrément et la décrémentation d'une variable consistent à modifier la valeur de la variable, et l'incrément et la décrémentation d'un pointeur consistent à modifier l'adresse pointée par le pointeur.
8. Que sont les lvalues et les rvalues ?
Réponse : les variables sont des valeurs l et peuvent se trouver sur le côté gauche des instructions d'affectation ; les littéraux numériques sont des valeurs r et ne peuvent pas être attribués.
9. Quelles sont les méthodes d'initialisation des variables ?
Réponse : 2 types : initialisation directe par copie. L'initialisation directe est plus flexible et fonctionne plus efficacement.
10. Que sont la déclaration et la définition des variables ?
Réponse : Le but principal de la déclaration de variable est d'indiquer le type et le nom de la variable ; le but principal de la définition de variable est d'allouer de l'espace de stockage lorsqu'ils sont identiques.
11. Quels types de portées existe-t-il en C++ ?
Réponse : 3 types : portée globale, portée locale, portée de l'instruction.
12. Quels sont les types de stockage des variables ?
Réponse : 4 types : type automatique, type statique, type registre, type externe.
13. Quelle est la différence entre C et C++ ?
Réponse : Le langage C est un langage de programmation structuré. Il est orienté processus et considère le processus de mise en œuvre ; C++ est orienté objet et considère l'ensemble du modèle de programme.
14. Quelle est la différence entre les définitions de macro et les opérateurs ?
Réponse : La définition de macro est l'une des commandes de prétraitement du C++. Il s'agit d'une opération de remplacement qui n'effectue pas de calculs ni de résolution d'expressions, et n'occupe pas de mémoire ni de temps de compilation.
15. Quelles sont les caractéristiques des fonctions virtuelles et des fonctions virtuelles pures ?
Réponse : Une fonction virtuelle doit être une fonction membre non statique de la classe de base, et ses droits d'accès peuvent être protégés ou publics ; une fonction virtuelle pure est un sous-ensemble de fonctions virtuelles, et un la classe contenant une fonction virtuelle pure est une classe abstraite, elle ne peut pas générer d'objets.
16. Comment utiliser les fonctions virtuelles pures ?
Réponse : Les fonctions virtuelles pures sont utilisées pour définir des implémentations dénuées de sens et sont utilisées pour les méthodes des classes abstraites qui doivent être transmises aux classes dérivées pour une implémentation concrète.
17. Qu'est-ce qu'un pointeur ?
Réponse : Un pointeur est une variable utilisée pour stocker une adresse mémoire. Il pointe vers l'adresse d'un seul objet. En plus du type de pointeur vide, le type de données du pointeur doit être. cohérent avec le type de données de la variable pointant vers l'adresse.
18. Quelle est la différence entre les pointeurs vers des objets const et les pointeurs const ?
Réponse : La valeur du pointeur const lui-même ne peut pas être modifiée, mais vous pouvez utiliser le pointeur pour modifier la valeur de l'objet vers lequel il pointe ; le pointeur vers une variable const ne peut pas modifier la valeur de ; la variable const vers laquelle il pointe, mais le pointeur lui-même peut être réaffecté.
19. Quelle est la différence entre un pointeur de tableau et un tableau de pointeurs ?
Réponse : Un pointeur de tableau est une variable de pointeur, qui pointe vers un tableau ; un tableau de pointeurs est un tableau contenant uniquement des éléments de pointeur, et ses éléments peuvent pointer vers différents objets du même type.
20. Qu'est-ce qu'un pointeur de fonction ?
Réponse : Un pointeur de fonction est un pointeur pointant vers l'adresse de l'espace de stockage d'une fonction. Vous pouvez attribuer une valeur au pointeur de fonction et appeler la fonction via le pointeur de fonction.
21. Quelle est la différence entre référence et transfert de valeur ?
Réponse : Le passage par valeur transmet une copie de la valeur, et le fonctionnement de la fonction sur le paramètre formel n'affectera pas la valeur du paramètre réel. Le passage par référence transmet l'adresse mémoire du ; objet de référence, et la fonction opère sur le paramètre formel. L'opération affectera la valeur du paramètre réel, et la valeur du paramètre réel changera à mesure que la valeur du paramètre formel change.
22. Quelle est la différence entre les pointeurs et les références ?
Réponse : (1) Les références n'ont pas besoin d'être déréférencées, les pointeurs doivent être déréférencés ; (2) Les références sont initialisées une fois lorsqu'elles sont définies, et sont immuables par la suite, tandis que les pointeurs sont mutables ; (3) Les références ne peuvent pas être vides, le pointeur peut être vide ; (4) Le programme alloue une zone mémoire pour la variable du pointeur, mais la référence n'a pas besoin d'allouer une zone mémoire, donc l'opération d'incrémentation du pointeur est automatique. l'incrément de la variable de pointeur, et l'opération d'auto-incrémentation de référence est l'auto-incrémentation de la valeur de la variable.
23. Quelle est la différence entre orienté objet et orienté processus ?
Réponse : L'orientation processus est une idée de programmation centrée sur le processus, pilotée par des algorithmes ; l'orientation objet est une idée de programmation centrée sur l'objet, pilotée par des messages. La composition d'un langage de programmation orienté processus : programme = algorithme + données ; la composition d'un langage de programmation orienté objet : programme = objet + message.
24. Quelles sont les caractéristiques de l'orienté objet ?
Réponse : Il existe trois éléments dans la gestion des objets : l'encapsulation, l'héritage et le polymorphisme. Tous les objets orientés objet peuvent être classés dans une classe.
25. Quelle est la différence entre une classe et une structure ?
Réponse : (1) La structure est stockée dans la pile, et l'instanciation de la classe peut être stockée dans la pile ou dans le tas (2) L'efficacité d'exécution de la structure est plus élevée ; que celui de la classe ; (3) Les structures n'ont pas de destructeurs, mais les classes ont des destructeurs (4) Les structures ne peuvent pas être héritées, mais les classes le peuvent ;
26. Comment accéder aux membres statiques ?
Réponse : les membres statiques peuvent être appelés directement via le nom de la classe sans créer d'instance de la classe. Ils peuvent également être appelés via une instance de la classe, mais la couche inférieure est toujours appelée via le nom de la classe. nom de classe, cette méthode d’appel n’est donc pas recommandée. Les méthodes statiques d'une classe ne peuvent accéder qu'aux membres statiques de la classe.
27. Qu'est-ce que le polymorphisme ?
Réponse : le polymorphisme consiste à attribuer des objets de sous-classe aux variables de classe parent. Les variables de classe parent présentent des caractéristiques différentes au moment de la compilation et de l'exécution.
28. Comment implémenter le polymorphisme en C++ ?
Réponse : Le polymorphisme comprend le polymorphisme dynamique, le polymorphisme statique, le polymorphisme de fonction et le polymorphisme macro. Le polymorphisme auquel nous faisons souvent référence est le polymorphisme dynamique, qui est basé sur le mécanisme d'héritage et le polymorphisme virtuel est implémenté. .
29. Conversion entre classe dérivée et classe de base ?
Réponse : Une classe dérivée peut toujours être convertie en un type de référence d'une classe de base ; la conversion d'une classe de base en une classe dérivée nécessite l'utilisation de cast lorsqu'il est possible de le faire en toute sécurité.
30. Qu'est-ce qu'un membre virtuel et quel est son rôle ?
Réponse : La fonction de la fonction virtuelle est de réaliser une liaison dynamique. Une fois que le programme a trouvé le mot-clé virtual avant le nom de la fonction virtuelle, il le traitera automatiquement comme une liaison dynamique, c'est-à-dire dynamique. sélection lorsque le programme est en cours d’exécution. Fonctions membres appropriées.
31. Présentation du recouvrement et du masquage C++ ?
Réponse : (1) L'écrasement signifie qu'il existe une fonction avec le même nom de fonction et les mêmes paramètres dans la sous-classe et la classe parent, et que la fonction de la classe parent est une fonction virtuelle ; Masquage Cela signifie qu'il existe des fonctions avec le même nom de fonction et des paramètres différents dans la sous-classe et la classe parent. À ce stade, que la fonction de la classe parent soit une fonction virtuelle, la fonction de la classe parent sera masquée ou il y en aura. fonctions avec le même nom de fonction et les mêmes paramètres, à ce stade, la fonction de classe parent sera masquée uniquement lorsque la fonction de classe parent n'est pas une fonction virtuelle.
32. Que sont la copie profonde et la copie superficielle ?
Réponse : Si une classe a des ressources et que les ressources de cette classe sont copiées, on parle de copie profonde ; si l'objet a des ressources mais que les ressources ne sont pas copiées pendant le processus de copie, c'est une copie superficielle.
33. Qu'est-ce que le constructeur de copie et quand est-il appelé ?
Réponse : Le constructeur de copie est appelé par le compilateur pour terminer la construction d'autres objets basés sur la même classe et initialisation. Il existe trois situations dans lesquelles le constructeur de copie sera utilisé : (1) Un objet est passé dans le corps de la fonction par valeur (2) Un objet est renvoyé par la fonction par valeur (3) Un objet doit être passé par un autre ; objet.
34. Qu'est-ce qu'un constructeur de conversion de type ?
Réponse : Le constructeur d'une classe n'a qu'un seul paramètre. Le type de paramètre n'est pas le type de la classe mais d'autres types. Ce constructeur est appelé constructeur de conversion de type, qui peut être utilisé pour traiter. La même valeur de données dans différents domaines.
35. Le C++ prend-il en charge les fonctions avec un nombre incertain de paramètres ?
Réponse : C++ peut prendre en charge des fonctions avec des paramètres incertains via le mécanisme des paramètres cachés.
36. Qu'est-ce qu'une fonction en ligne ?
Réponse : les fonctions membres déclarées ou définies dans une déclaration de classe sont appelées fonctions en ligne. Les instructions de boucle et les instructions switch ne sont pas autorisées dans les fonctions en ligne.
37. Quelle est la différence entre les paramètres formels de référence et les paramètres formels de non-référence ?
Réponse : Le paramètre de référence doit transmettre l'adresse de la variable paramètre, et la valeur du paramètre réel peut être modifiée en appelant la fonction sur le paramètre formel.
38. Quels sont les problèmes liés à l'utilisation des paramètres de référence ?
Réponse : lors de l'appel d'un paramètre de référence de type non const, le paramètre réel ne doit pas être de type const et les deux types doivent être cohérents lors de l'appel d'une fonction de paramètre formel avec une référence const ; , si le paramètre réel n'est pas un Lorsque les variables ou les types ne correspondent pas, la fonction créera une variable temporaire sans nom pour stocker la valeur du paramètre réel et utilisera ce paramètre formel comme référence à la variable temporaire.
39. Quelle est la différence entre les paramètres du pointeur et les paramètres de référence ?
Réponse : le paramètre Pointeur signifie que le paramètre de la fonction est un pointeur. Il n'affectera pas la valeur du paramètre réel via l'appel de fonction comme le paramètre de référence, mais il modifiera l'objet du. paramètre réel après l’appel. Il est recommandé d'utiliser le moins possible les paramètres de pointeur dans le programme, car cela réduirait la lisibilité du programme.
40. Qu'est-ce qu'une fonction statique ? Comment utiliser les fonctions statiques ?
Réponse : Une fonction statique est une fonction modifiée avec le modificateur static. Une fonction statique n'a pas ce pointeur et ne peut accéder qu'aux variables statiques. Si le résultat d’un appel de fonction dans une classe n’accèdera ni ne modifiera aucun membre de données d’objet, il est préférable de déclarer ces membres en tant que fonctions membres statiques.
41. Surcharge de fonctions et portée ?
Réponse : La surcharge de fonctions fait référence à plusieurs fonctions portant le même nom mais des listes de paramètres différentes dans la même portée.
42. Comment implémenter la conversion de type des paramètres réels en cas de surcharge de fonction ?
Réponse : lors d'une surcharge de fonction, la correspondance est d'abord obtenue par conversion standard. , puis utilisez la conversion de type de classe pour obtenir la correspondance.
43. Qu'est-ce qu'un modèle de fonction ?
Réponse : La technologie des modèles de fonctions fait référence à l'utilisation de la technologie des modèles pour définir des fonctions non membres de types paramétrés, ce qui permet aux programmes d'appeler la même fonction en utilisant différents types de paramètres.
44. Qu'est-ce qu'un modèle de cours ?
Réponse : les modèles de classe sont des classes qui utilisent la technologie des modèles pour décrire des types de données généraux pouvant gérer d'autres types de données. La technologie des modèles de classe est souvent utilisée pour créer des classes conteneurs contenant d’autres types (files d’attente, listes chaînées, piles, etc.).
45. Qu'est-ce que la programmation générique ?
Réponse : La programmation générique consiste à écrire du code d'une manière indépendante de l'implémentation d'une classe spécifique et à fournir une implémentation commune pour différents types.
46. Comment le C++ implémente-t-il la programmation générique ?
Réponse : L'implémentation de la programmation générique en C++ est implémentée à l'aide de la technologie des modèles en C++, principalement en concevant des modèles de fonctions et des modèles de classes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!