state-management

___ qstnhdr ___ Python mit Anweisung in C ++ ___ answer11493847 ___

Die With-Anweisung ist eine Möglichkeit in Python zu machen, was in C ++ bereits normal ist. Es heißt RAII: Ressourcenerfassung ist Initialisierung.

In Python wird beim Erstellen eines Klassenobjekts die Methode %code% aufgerufen (dies ist jedoch keine strenge Garantie). Die Methode %code% wird vom Speicherbereiniger zu einem bestimmten Zeitpunkt aufgerufen, nachdem das Objekt nicht mehr verwendet wird, aber es ist nicht deterministisch.

In C ++ wird der Destruktor an einem genau definierten Punkt aufgerufen, so dass %code% nicht benötigt wird.

Ich schlage vor, Sie verwenden etwas wie Klasse B (keine Notwendigkeit für Klasse A oder With).

%Vor%

benutze es so:

%Vor%     
___ tag123python ___ Python ist eine dynamische und stark typisierte Programmiersprache, die die Usability betont. Zwei ähnliche, aber größtenteils inkompatible Versionen von Python sind weit verbreitet (2 und 3). Wenn Sie eine versionsspezifische Python-Frage haben, sollten Sie die Tags [python-2.7] oder [python-3.x] zusätzlich zum Tag [python] verwenden. Wenn Sie eine Python-Variante wie jython, pypy, iron-python usw. verwenden, kennzeichnen Sie diese bitte entsprechend. ___ qstntxt ___

Ich versuche, etwas Ähnliches wie die python with-Anweisung in C ++ zu implementieren. Da ich vorhabe, es hauptsächlich mit Qt-OpenGL zu verwenden, heißen die Methoden %code% und %code% (in python %code% , %code% ).

Code Ich kam auf:

Kopfzeile:

%Vor%

cpp:

%Vor%

Verwendung:

%Vor%

Fragen:

  1. Needing %code% und %code% fühlt sich ein wenig ungeschickt an. Gibt es eine bessere Alternative?
  2. Gibt es Nachteile bei der Verwendung von %code% anstelle von %code% ? Es würde die Verwendung von temporären Objekten möglich machen (z.B. %code% )
___ tag123withstatement ___ Einige Sprachen haben With-Anweisungen. Die Python with-Anweisung erstellt einen neuen Kontext mit zugehörigem Kontextmanager. Wenn der Kontext (ein Codeblock) wieder verlassen wird, wird der Kontextmanager benachrichtigt. Bitte verwenden Sie "common-table-expression" für die SQL WITH-Konstruktion. ___ tag123Statemanagement ___ hilf uns dieses Wiki zu bearbeiten ___ 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. ___ answer11493983 ___

Es wird mit der Sprache geliefert und heißt RAII.

%Vor%     
___
2
Antworten

Python mit Anweisung in C ++

Ich versuche, etwas Ähnliches wie die python with-Anweisung in C ++ zu implementieren. Da ich vorhabe, es hauptsächlich mit Qt-OpenGL zu verwenden, heißen die Methoden bind und release (in python __enter__ , __exit__ ). Code Ich k...
15.07.2012, 11:31