c++

C ++ ist eine universelle Programmiersprache. Es wurde ursprünglich als Erweiterung von C entworfen und behält eine ähnliche Syntax, ist aber jetzt eine komplett andere Sprache. Verwenden Sie dieses Tag für Fragen zu Code, der mit einem C ++ - Compiler kompiliert werden soll.
1
Antwort

Boost in android ndk mit Windows verwenden

Ich versuche, Boost-Bibliothek mit Android ndk in Eclipse mit Windows zu verwenden. Ich habe versucht, dieses Tutorial zu folgen > Ich bin in dem Schritt mit "bjam" -Befehl in Cygwin stecken. bjam --without-python - ohne-serialisierung t...
16.07.2013, 04:24
3
Antworten

c ++ Kopiere Konstruktor mit shared_ptr Mitgliedern

Von cplusplus.com :    Selten werden Sie auf eine Klasse stoßen, die keine rohen Zeiger enthält   Der Standardkopiekonstruktor ist jedoch nicht ausreichend. Ein Beispiel dafür   ist, wenn Sie ein Referenzobjekt haben. boost :: shared_ptr & l...
24.07.2013, 12:04
3
Antworten

Benutzerdefinierte nativ-Dateien in Visual Studio 2012

Ich versuche neue Debug-Visualisierer in meinem Projekt zu verwenden, aber etwas ist mit Visual Studio passiert und es nimmt meine natvis-Dateien nicht mehr auf. Ich habe versucht, sie in %USERPROFILE%\My Documents\Visual Studio 2012\Visualizer...
23.07.2013, 13:29
4
Antworten

objcopy stellt den Verzeichnispfad dem Symbolnamen voran

Ich bin dabei, objcopy zu verwenden, um eine binäre Form einer Textdatei in eine ausführbare Datei einzufügen. (Zur Laufzeit brauche ich die Datei als String). Das funktioniert gut, bis der Linker die Verweise von den Symbolnamen finden muss....
24.03.2013, 03:53
2
Antworten

Was ist der Typ eines String-Literals in C ++? [Duplikat]

Zum Beispiel, was ist der Typ des String-Literals "Hallo", const char[6] oder const char* ?     
19.03.2013, 18:56
6
Antworten

Kann die Include-Datei nicht öffnen: 'vector.h': Keine solche Datei oder Verzeichnis

Am Anfang der Datei habe ich: %Vor% dann mache ich ein: %Vor% und habe den folgenden Fehler erhalten %Vor% Verpasse ich etwas? Ich habe #include "Vektor" noch mehr Fehler versucht. %Vor%     
18.07.2011, 06:46
3
Antworten

Warum erstellt dieser Aufruf durch Verweis eine neue Instanz?

Im Aufruf einer Methode foo by const ref : %Vor% Dieser Codeabschnitt kompiliert nicht nur, er erstellt eine neue Instanz von Entity mit seinen Standardwerten im Bereich von foo . Ich würde erwarten, dass dies nicht kompiliert oder...
20.09.2011, 13:03
4
Antworten

Initialisierung eines Arrays von Objekten

Ich arbeite gerade an einem Kartenspiel und habe Probleme mit einem Initialisierungscode: %Vor% Das Problem ist, dass mein Compiler mir sagt, dass cards++ kein l-Wert ist. Ich habe die ganze Sache mit dem Zeiger-Array-Äquivalenz gelesen,...
26.09.2011, 16:22
3
Antworten

Was sind Abstraktionen? ___ qstntxt ___

Ich habe Stroustrups "Die C ++ Programmiersprache" gelesen und erwähnt sehr oft "Abstraktionen":

  

Viele der flexibelsten, effizientesten und nützlichsten Abstraktionen beinhalten die Parametrisierung von Typen (Klassen) und Algorithmen (Funktionen) mit anderen Typen und Algorithmen

und

  

C ++ ist eine Sprache für die Entwicklung und Verwendung eleganter und effizienter Abstraktionen.

Hängt das in irgendeiner Weise mit abstrakten Klassen in C ++ zusammen? Oder mit Polymorphie, Vererbung oder Templates?

Könnte jemand bitte ein Beispiel geben?

    
___ answer18142662 ___

In der generischen Programmierung haben Abstraktionen eine genaue Bedeutung und werden "Konzepte" genannt. Ein Konzept ist wie folgt definiert :

Ein Konzept besteht aus einer Reihe von Anforderungen, die aus gültigen Ausdrücken, zugehörigen Typen, Invarianten und Komplexitätsgarantien bestehen. Ein Typ, der die Anforderungen erfüllt, soll das Konzept modellieren. Ein Konzept kann die Anforderungen eines anderen Konzepts erweitern, das als Verfeinerung bezeichnet wird.

  • Gültige Ausdrücke sind C ++ - Ausdrücke, die erfolgreich kompiliert werden müssen, damit die an dem Ausdruck beteiligten Objekte als Modelle des Konzepts betrachtet werden können.
  • Zugehörige Typen sind Typen, die mit dem Modellierungstyp verknüpft sind, da sie an einem oder mehreren gültigen Ausdrücken teilnehmen. Auf normalerweise zugeordnete Typen kann entweder über typedefs zugegriffen werden, die in einer Klassendefinition für den Modellierungstyp verschachtelt sind, oder auf sie wird über eine Merkmalsklasse zugegriffen.
  • Invarianten sind Laufzeiteigenschaften der Objekte, die immer "true" sein müssen, dh die Funktionen, an denen die Objekte beteiligt sind, müssen diese Eigenschaften beibehalten. Die Invarianten haben oft die Form von Vorbedingungen und Nachbedingungen.
  • Komplexitätsgarantien sind maximale Grenzen für die Dauer der Ausführung eines gültigen Ausdrucks oder für die Verwendung verschiedener Ressourcen. Die in der C ++ - Standardbibliothek verwendeten Konzepte sind auf der SGI STL-Site dokumentiert .

Die Implementierung eines Konzepts in echten Code kann auf verschiedene Arten erfolgen. Der klassische OOP-Ansatz besteht darin, eine abstrakte Basisklasse zu schreiben, die die gültigen Ausdrücke und zugehörigen Typen bereitstellt. Die konkret abgeleiteten Klassen liefern dann die Invarianten und die Komplexitätsgarantien. Bei Vorlagen sind die gültigen Ausdrücke impliziter und werden erst nach der Instanziierung überprüft. Template-Implementierungskonzepte sind eine Form von Enttippung : wenn es aussieht wie eine Ente, Quacksalber wie eine Ente, ....

Der C ++ 0x-Entwicklungsprozess hat sich sehr viel Mühe gegeben Konzepte direkt in Code umsetzbar machen, aber nicht in C ++ integriert 11 Standard . Allerdings ein Konzepte Lite Version wird wahrscheinlich in den nächsten C ++ 14 Standard erscheinen.

    
___ tag123c ___ C ++ ist eine universelle Programmiersprache. Es wurde ursprünglich als Erweiterung von C entworfen und behält eine ähnliche Syntax, ist aber jetzt eine komplett andere Sprache. Verwenden Sie dieses Tag für Fragen zu Code, der mit einem C ++ - Compiler kompiliert werden soll. ___ answer18141913 ___
  

Abstraktion ( n ) - die Qualität des Umgangs mit Ideen anstelle von Ereignissen

     

- Quelle: Oxford English Dictionary

Stroustrup bezieht sich nicht auf abstrakte Klassen oder andere spezifische Ideen in der Programmierung. Vielmehr bezieht er sich auf das Wort Abstraktion selbst.

Abstraktionen sind mentale Helfer. Sie helfen uns, eher in "Theorie" als in direkter Anwendung zu denken. Mathematik ist die Kunst der Abstraktion. Programmieren ist die Kunst der angewandten Abstraktionen.

Abstraktionen helfen uns, mentale Modelle wie Hierarchien zu bilden, die uns helfen, über Dinge nachzudenken. Polymorphismus ist aufgrund von Abstraktionen möglich. Schauen wir uns ein Beispiel an.

Beispiel

Ich habe einen Oleksiy Dobrodum. Ich bezeichne es als Oleksiy Dobrodum, ich behandle es wie ein Oleksiy Dobrodum, alles was es jemals geben wird, ist ein Oleksiy Dobrodum. Alles, was ich mit diesem Oleksiy Dobrodum mache, ist speziell dafür. Wir sind jetzt auf der ersten Abstraktionsebene oder am spezifischsten, wenn wir mit diesem Oleksiy Dobrodum arbeiten.

Kürzlich habe ich eine Zach Latta erworben, also habe ich jetzt einen Oleksiy Dobrodum und einen Zach Latta.

Ich könnte sie sowohl einzeln als auch als Oleksiy Dobrodum und als Zach Latta bezeichnen, aber das würde schnell überflüssig werden und sich als nicht flexibel erweisen. Stattdessen können wir einfach Oleksiy Dobrodum und Zach Latta zusammenfassen und sie Menschen nennen. Wir haben jetzt Abstraktionslevel 2 erreicht. Anstatt mit jeder Person einzeln umzugehen, können wir sie als Menschen bezeichnen. Auf diese Weise haben wir die "Implementierung" oder die spezifischen Details jeder Person abstrahiert und haben begonnen, uns auf die Ideen zu konzentrieren, daher denken wir jetzt abstrakt.

Natürlich können wir das weiter abstrahieren, aber hoffentlich fangen Sie an, die Idee hinter Abstraktionen zu verstehen. Der Schlüssel dazu ist, dass eine Abstraktion die Details (oder die Implementierung) versteckt . Indem wir die Details in unserer menschlichen Abstraktion verbergen, erlauben wir uns, in Allgemeinheiten zu sprechen. Wir werden kurz darüber sprechen, wie dies beim Programmieren im nächsten Abschnitt zutrifft.

Anwenden von Abstraktionen

Nachdem wir nun kurz angesprochen haben, was eine Abstraktion ist, wenden wir sie an. Polymorphismus ist aufgrund von Abstraktionen möglich. Befolgen Sie das Modell des vorherigen Beispiels, sagen wir, dass wir die folgenden zwei Klassen haben:

%Vor%

Wenn ich mit einer Instanz von %code% interagieren möchte, muss ich mich speziell auf sie beziehen. Dasselbe gilt für %code% Instanzen.

%Vor%

Wenn ich eine abstrakte Klasse namens %code% erstelle und beide %code% und %code% davon erben, kann ich die Implementierung beider Klassen abstrahieren und einfach auf beide Instanzen verweisen von ihnen als %code% .

%Vor%

Unser Klassendiagramm sieht jetzt wie folgt aus:

Ich könnte über die Implementierung für immer streiten, aber lassen Sie uns zu unseren wichtigsten Imbissbuden gehen.

Key Takeaways

  • Abstraktionen sind Ideen, keine spezifischen Ereignisse
  • etwas abstrahieren bedeutet, sich von seiner Umsetzung zu entfernen und über große Ideen nachzudenken
  • Abstraktionen können verwendet werden, um Code (und viele andere Dinge) effektiv zu organisieren
  • Objektorientierte Programmierung hängt vollständig von den Abstraktionen ab. Siehe den obigen Aufzählungspunkt.
___ tag123abstraction ___ Abstraktion ist ein Informatikkonzept, bei dem eine Implementierung von ihrer Schnittstelle getrennt ist. ___ answer18142101 ___

Ja, es hängt mit den abstrakten Klassen in C ++ zusammen, und es ist nicht auf diesen Kontext beschränkt, er erklärte generisch, dass C ++ die Abstraktion vollständig unterstützt.

Beispiel: In C ++ können wir die Klassentypen oder Funktionsaufrufe in anderen Typen verwenden. Zum Beispiel kann ein Funktionsaufruf einen Klassentyp / eine Funktion als Parameter haben, sowohl die Funktion als auch a class verweist auf eine Form abstraction- (hier bezieht sich Abstraktion auf das Ausblenden der Definition der Funktion oder einer Klasse vom Benutzer)

    
___

Ich habe Stroustrups "Die C ++ Programmiersprache" gelesen und erwähnt sehr oft "Abstraktionen":    Viele der flexibelsten, effizientesten und nützlichsten Abstraktionen beinhalten die Parametrisierung von Typen (Klassen) und Algorithmen (Fun...
09.08.2013, 07:18
2
Antworten

C ++ - Vorlagen, Standardargument als Methode

Für diese Implementierung der Auswahl sort: %Vor% Wie sollte ich es ändern, so dass Compare comp std::less Methode wäre, wenn letzter Parameter wird für die Sortiermethode übersprungen? Ich habe das Überladen der Funktion versucht...
03.02.2017, 14:25