Heim > Artikel > Backend-Entwicklung > C++-Grundkenntnisse
C++-Grundlagen
C++ ist eine Zwischensprache, die 1979 von Bjarne Stroustrup bei Bell Design und Entwicklung entwickelt wurde begann im Labor. C++ erweitert und verbessert die C-Sprache weiter und ist eine objektorientierte Programmiersprache. C++ läuft auf einer Vielzahl von Plattformen, beispielsweise Windows, MAC-Betriebssystemen und verschiedenen Versionen von UNIX. Die C-Sprache ist eine prozessorientierte Sprache, und C++ fügt auf dieser Basis objektorientierte und generische Programmiermechanismen hinzu. Daher eignet sich C++ besser für die Entwicklung großer und mittlerer Programme. Allerdings geht C++ nicht auf Kosten der Effizienz, wenn man keine erweiterten Funktionen nutzt. Die Effizienz ist fast die gleiche wie die der C-Sprache.
Empfohlene Studie: C++-Handbuch-Tutorial
Das Folgende ist eine Zusammenfassung der Grundkenntnisse von C++, ich hoffe, es wird Ihnen hilfreich sein.
1. Was sind die grundlegenden Datentypen in C++?
Antwort: 3 Typen: Ganzzahl, Gleitkomma und ungültig.
2. Es gibt verschiedene Formen von ganzen Zahlen. Was sind die Unterschiede zwischen den verschiedenen Formen?
Antwort: Ganzzahlen umfassen arithmetische Typen von Ganzzahlen, Zeichen und booleschen Werten, die nach Modifikatoren in 13 Formen unterteilt sind. Die Hauptunterschiede spiegeln sich in der Typbezeichnung, der Länge und dem Darstellungsbereich wider.
3. Was sind die Konstanten in C++?
Antwort: 6 Arten von Konstanten: Ganzzahlkonstanten, Gleitkommakonstanten, Zeichenkonstanten, Zeichenfolgenkonstanten, Escape-Zeichenkonstanten und Adresskonstanten.
4. Was sind die Unterschiede zwischen Konstanten und Variablen?
Antwort: (1) Der Wert einer Konstante kann nicht geändert werden, aber der Wert einer Variablen kann geändert werden. (2) Konstanten müssen initialisiert werden, wenn sie definiert werden, Variablen jedoch nicht müssen initialisiert werden, wenn sie definiert sind. (3) Konstanten können nicht gefunden werden. Die Adresse kann nur einem Konstantenzeiger zugewiesen werden, und Variablen können adressiert werden. (4) Konstanten haben eine höhere Kompilierungs- und Ausführungseffizienz 🎜>5. Welche Klassifizierungen gibt es für Betreiber?
Antwort: (1) Nach den Operanden: unäre Operatoren, binäre Operatoren, ternäre Operatoren; (2) Nach Funktionen: arithmetische Operatoren, relationale Operatoren, Operator für logische Operationen, Bitoperator, Zuweisungsoperator , Inkrement- und Dekrementoperator, Pfeiloperator, bedingter Operator, Sizeof-Operator, Kommaoperator.
6. Was ist der Unterschied zwischen der Selbsterhöhung und der Selbstverringerung vor und nach der Operation?
Antwort: Die Priorität der ersteren Inkrementierungs- und Selbstdekrementierungsoperation ist größer als die des Zuweisungsoperators (=), die Priorität der letzteren Inkrementierungs- und Selbstdekrementierungsoperation ist geringer als die des Zuweisungsoperators. und der Ausdruck nach der letztgenannten Inkrementierungs- und Selbstdekrementierungsoperation lautet: Der Wert der Formel ändert sich nicht.
7. Was ist der Unterschied zwischen dem Inkrementieren und Dekrementieren von Zeigern und Variablen?
Antwort: Durch das Erhöhen und Verringern einer Variablen wird der Wert der Variablen geändert, und durch das Erhöhen und Verringern eines Zeigers wird die Adresse geändert, auf die der Zeiger zeigt.
8. Was sind L-Werte und R-Werte?
Antwort: Variablen sind L-Werte und können auf der linken Seite von Zuweisungsanweisungen stehen; numerische Literale sind R-Werte und können nicht zugewiesen werden.
9. Welche Initialisierungsmethoden gibt es für Variablen?
Antwort: 2 Typen: direkte Initialisierung; Kopierinitialisierung. Die direkte Initialisierung ist flexibler und führt effizienter aus.
10. Was sind die Deklaration und Definition von Variablen?
Antwort: Der Hauptzweck der Variablendeklaration besteht darin, den Typ und den Namen der Variablen anzugeben. Der Hauptzweck der Variablendefinition besteht darin, Speicherplatz zuzuweisen, wenn sie gleich sind.
11. Welche Arten von Bereichen gibt es in C++?
Antwort: 3 Typen: globaler Bereich, lokaler Bereich, Anweisungsbereich.
12. Welche Speichertypen gibt es für Variablen?
Antwort: 4 Typen: automatischer Typ, statischer Typ, Registertyp, externer Typ.
13. Was ist der Unterschied zwischen C und C++?
Antwort: Die Sprache C ist eine strukturierte Programmiersprache. Sie ist prozessorientiert und berücksichtigt den Implementierungsprozess. C++ ist objektorientiert und berücksichtigt das gesamte Programmmodell.
14. Was ist der Unterschied zwischen Makrodefinitionen und Operatoren?
Antwort: Die Makrodefinition ist einer der Vorverarbeitungsbefehle von C++. Es handelt sich um eine Ersetzungsoperation, die keine Berechnungen oder Ausdruckslösungen durchführt und weder Speicher noch Kompilierungszeit beansprucht.
15. Was sind die Merkmale virtueller Funktionen und rein virtueller Funktionen?
Antwort: Eine virtuelle Funktion muss eine nicht statische Mitgliedsfunktion der Basisklasse sein und ihre Zugriffsrechte können geschützt oder öffentlich sein. Eine rein virtuelle Funktion ist eine Teilmenge virtueller Funktionen Eine Klasse, die eine rein virtuelle Funktion enthält, ist eine abstrakte Klasse und kann keine Objekte generieren.
16. Wie nutzt man rein virtuelle Funktionen?
Antwort: Rein virtuelle Funktionen werden zur Definition bedeutungsloser Implementierungen verwendet und werden für Methoden in abstrakten Klassen verwendet, die zur konkreten Implementierung an abgeleitete Klassen übergeben werden müssen.
17. Was ist ein Zeiger?
Antwort: Ein Zeiger ist eine Variable, die zum Speichern einer Speicheradresse verwendet wird. Er zeigt auf die Adresse eines einzelnen Objekts. Zusätzlich zum void-Zeigertyp muss der Datentyp des Zeigers sein konsistent mit dem Datentyp der Variablen, die auf die Adresse zeigt.
18. Was ist der Unterschied zwischen Zeigern auf const-Objekte und const-Zeigern?
Antwort: Der Wert des const-Zeigers selbst kann nicht geändert werden, aber Sie können den Zeiger verwenden, um den Wert des Objekts zu ändern, auf das er zeigt. Der Zeiger auf eine const-Variable kann den Wert von nicht ändern die const-Variable, auf die es zeigt, aber der Zeiger selbst Kann neu zugewiesen werden.
19. Was ist der Unterschied zwischen Array-Zeiger und Zeiger-Array?
Antwort: Ein Array-Zeiger ist eine Zeigervariable, die auf ein Array zeigt. Ein Zeiger-Array ist ein Array, das nur Zeigerelemente enthält, und seine Elemente können auf verschiedene Objekte desselben Typs zeigen.
20. Was ist ein Funktionszeiger?
Antwort: Ein Funktionszeiger ist ein Zeiger, der auf die Speicherplatzadresse einer Funktion zeigt. Sie können dem Funktionszeiger einen Wert zuweisen und die Funktion über den Funktionszeiger aufrufen.
21. Was ist der Unterschied zwischen Referenz und Wertübertragung?
Antwort: Die Übergabe des Werts übergibt eine Kopie des Werts, und die Operation der Funktion am formalen Parameter hat keinen Einfluss auf den Wert des tatsächlichen Parameters Referenzobjekt, und die Funktion arbeitet mit dem formalen Parameter. Die Operation wirkt sich auf den Wert des tatsächlichen Parameters aus, und der Wert des tatsächlichen Parameters ändert sich, wenn sich der Wert des formalen Parameters ändert.
22. Was ist der Unterschied zwischen Hinweisen und Referenzen?
Antwort: (1) Referenzen müssen nicht dereferenziert werden, Zeiger müssen dereferenziert werden; (2) Referenzen werden einmal initialisiert, wenn sie definiert werden, und sind danach unveränderlich, während Zeiger veränderbar sind; (3) Referenzen dürfen nicht leer sein. Der Zeiger kann leer sein Automatische Inkrementierung der Zeigervariablen, und die Referenz-Autoinkrementoperation ist die automatische Inkrementierung des Variablenwerts.
23. Was ist der Unterschied zwischen objektorientiert und prozessorientiert?
Antwort: Prozessorientiert ist eine prozesszentrierte Programmieridee, die von Algorithmen gesteuert wird; objektorientiert ist eine objektzentrierte Programmieridee, die von Nachrichten gesteuert wird. Der Aufbau einer prozessorientierten Programmiersprache: Programm = Algorithmus + Daten; der Aufbau einer objektorientierten Programmiersprache: Programm = Objekt + Nachricht.
24. Was sind die Merkmale der Objektorientierung?
Antwort: Es gibt drei Elemente der Objektorientierung: Kapselung, Vererbung und Polymorphismus. Alle objektorientierten Objekte können in eine Klasse eingeteilt werden.
25. Was ist der Unterschied zwischen einer Klasse und einer Struktur?
Antwort: (1) Die Struktur wird im Stapel gespeichert, und die Instanziierung der Klasse kann im Stapel oder im Heap gespeichert werden. (2) Die Ausführungseffizienz der Struktur ist höher als die der Klasse; (3) Strukturen haben keine Destruktoren, aber Klassen haben Destruktoren. (4) Strukturen können nicht vererbt werden, Klassen jedoch schon.
26. Wie greife ich auf statische Mitglieder zu?
Antwort: Statische Mitglieder können direkt über den Klassennamen aufgerufen werden, ohne eine Instanz der Klasse zu erstellen. Sie können auch über eine Instanz der Klasse aufgerufen werden, die unterste Ebene wird jedoch weiterhin über aufgerufen Klassenname, daher wird diese Aufrufmethode nicht empfohlen. Statische Methoden einer Klasse können nur auf statische Mitglieder der Klasse zugreifen.
27. Was ist Polymorphismus?
Antwort: Beim Polymorphismus werden Unterklassenobjekte den Variablen der übergeordneten Klasse zugewiesen. Variablen der übergeordneten Klasse zeigen zur Kompilierungszeit und zur Laufzeit unterschiedliche Eigenschaften.
28. Wie implementiert man Polymorphismus in C++?
Antwort: Polymorphismus umfasst dynamischen Polymorphismus, statischen Polymorphismus, Funktionspolymorphismus und Makropolymorphismus. Der Polymorphismus, auf den wir uns häufig beziehen, bezieht sich auf den Vererbungsmechanismus und die virtuelle Polymorphie .
29. Konvertierung zwischen abgeleiteter Klasse und Basisklasse?
Antwort: Eine abgeleitete Klasse kann immer in einen Referenztyp einer Basisklasse konvertiert werden; die Konvertierung von einer Basisklasse in eine abgeleitete Klasse erfordert die Verwendung von Cast, wenn dies sicher ist.
30. Was ist ein virtuelles Mitglied und welche Rolle spielt es?
Antwort: Die Funktion der virtuellen Funktion besteht darin, eine dynamische Bindung zu realisieren. Nachdem das Programm das Schlüsselwort virtual vor dem Namen der virtuellen Funktion gefunden hat, behandelt es es automatisch als dynamische Bindung, also dynamisch Auswahl, wenn das Programm ausgeführt wird.
31. Überblick über das Verdecken und Verbergen von C++?
Antwort: (1) Überschreiben bedeutet, dass es in der Unterklasse und der übergeordneten Klasse eine Funktion mit demselben Funktionsnamen und denselben Parametern gibt und die Funktion der übergeordneten Klasse eine virtuelle Funktion ist (2) Ausblenden bedeutet, dass es in der Unterklasse und der übergeordneten Klasse Funktionen mit demselben Funktionsnamen und unterschiedlichen Parametern gibt. Unabhängig davon, ob die Funktion der übergeordneten Klasse eine virtuelle Funktion ist, wird die Funktion der übergeordneten Klasse ausgeblendet oder vorhanden sein Funktionen mit demselben Funktionsnamen und denselben Parametern. Zu diesem Zeitpunkt wird die Funktion der übergeordneten Klasse nur ausgeblendet, wenn es sich bei der Funktion der übergeordneten Klasse nicht um eine virtuelle Funktion handelt.
32. Was sind Deep Copy und Shallow Copy?
Antwort: Wenn eine Klasse Ressourcen hat und die Ressourcen dieser Klasse kopiert werden, spricht man von einer tiefen Kopie; wenn das Objekt Ressourcen hat, die Ressourcen aber während des Kopiervorgangs nicht kopiert werden, ist dies der Fall eine oberflächliche Kopie.
33. Was ist der Kopierkonstruktor und wann wird er aufgerufen?
Antwort: Der Kopierkonstruktor wird vom Compiler aufgerufen, um die Konstruktion anderer darauf basierender Objekte abzuschließen die gleiche Klasse und Initialisierung. Es gibt drei Situationen, in denen der Kopierkonstruktor verwendet wird: (1) Ein Objekt wird als Wert an den Funktionskörper übergeben. (2) Ein Objekt wird als Wert von der Funktion zurückgegeben. (3) Ein Objekt muss durch ein anderes übergeben werden Objekt. Initialisierung.
34. Was ist ein Typkonvertierungskonstruktor?
Antwort: Der Konstruktor einer Klasse hat nur einen Parametertyp, der nicht der Typ der Klasse ist, sondern andere Typen, die zur Verarbeitung verwendet werden können Derselbe Datenwert in verschiedenen Domänen.
35. Unterstützt C++ Funktionen mit einer ungewissen Anzahl von Parametern?
Antwort: C++ kann Funktionen mit unsicheren Parametern durch den versteckten Parametermechanismus unterstützen.
36. Was ist eine Inline-Funktion?
Antwort: Innerhalb einer Klassendeklaration deklarierte oder definierte Mitgliedsfunktionen werden als Inline-Funktionen bezeichnet und Switch-Anweisungen sind innerhalb von Inline-Funktionen nicht zulässig.
37. Was ist der Unterschied zwischen Referenz-Formalparametern und Nicht-Referenz-Formalparametern?
Antwort: Der Referenzparameter besteht darin, die Adresse der Parametervariablen zu übergeben, und der Wert des tatsächlichen Parameters kann durch Aufrufen der Funktion für den formalen Parameter geändert werden.
38. Welche Probleme gibt es bei der Verwendung von Referenzparametern?
Antwort: Beim Aufrufen eines Referenzparameters vom Typ „non-const“ darf der tatsächliche Parameter nicht vom Typ „const“ sein, und die beiden Typen sollten konsistent sein, wenn eine formale Parameterfunktion mit einer const-Referenz aufgerufen wird , wenn der tatsächliche Parameter kein ist Wenn die Variablen oder Typen nicht übereinstimmen, erstellt die Funktion eine unbenannte temporäre Variable, um den Wert des tatsächlichen Parameters zu speichern, und verwendet diesen formalen Parameter als Referenz auf die temporäre Variable.
39. Was ist der Unterschied zwischen Zeigerparametern und Referenzparametern?
Antwort: Zeigerparameter bedeutet, dass der Parameter der Funktion ein Zeiger ist. Er beeinflusst den Wert des tatsächlichen Parameters durch den Funktionsaufruf nicht wie der Referenzparameter, verändert jedoch das Objekt der Funktion Aktualparameter nach dem Aufruf. Es wird empfohlen, im Programm so wenig Zeigerparameter wie möglich zu verwenden, da dies die Lesbarkeit des Programms beeinträchtigt.
40. Was ist eine statische Funktion? Wie verwende ich statische Funktionen?
Antwort: Eine statische Funktion ist eine mit dem statischen Modifikator modifizierte Funktion. Eine statische Funktion verfügt nicht über diesen Zeiger und kann nur auf statische Variablen zugreifen. Wenn das Ergebnis eines Funktionsaufrufs in einer Klasse nicht auf Objektdatenelemente zugreift oder diese ändert, ist es besser, solche Elemente als statische Elementfunktionen zu deklarieren.
41. Funktionsüberlastung und Umfang?
Antwort: Funktionsüberladung bezieht sich auf mehrere Funktionen mit demselben Namen, aber unterschiedlichen Parameterlisten im selben Bereich.
42. Wie implementiert man die Typkonvertierung tatsächlicher Parameter beim Überladen von Funktionen?
Antwort: Beim Überladen von Matching-Funktionen wird der Matching zuerst durch Standardkonvertierung erreicht Verwenden Sie dann die Klassentypkonvertierung, um eine Übereinstimmung zu erzielen.
43. Was ist eine Funktionsvorlage?
Antwort: Unter Funktionsvorlagentechnologie versteht man die Verwendung von Vorlagentechnologie zum Definieren von Nicht-Member-Funktionen parametrisierter Typen, die es Programmen ermöglichen, dieselbe Funktion mit unterschiedlichen Parametertypen aufzurufen.
44. Was ist eine Klassenvorlage?
Antwort: Klassenvorlagen sind Klassen, die mithilfe der Vorlagentechnologie allgemeine Datentypen beschreiben, die andere Datentypen verwalten können. Die Klassenvorlagentechnologie wird häufig zum Erstellen von Containerklassen verwendet, die andere Typen (Warteschlangen, verknüpfte Listen, Stapel usw.) enthalten.
45. Was ist generische Programmierung?
Antwort: Bei der generischen Programmierung wird Code auf eine Weise geschrieben, die unabhängig von der Implementierung einer bestimmten Klasse ist, und eine gemeinsame Implementierung für verschiedene Typen bereitgestellt.
46. Wie implementiert C++ generische Programmierung?
Antwort: Die Implementierung der generischen Programmierung in C++ wird mithilfe der Vorlagentechnologie in C++ implementiert, wobei hauptsächlich Funktionsvorlagen und Klassenvorlagen entworfen werden.
Das obige ist der detaillierte Inhalt vonC++-Grundkenntnisse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!