2010-07-29 12 views

Antwort

10

Sie sind identisch.

Einzelheiten finden Sie MSDN's interface class Referenz, unter Bemerkungen:

Schnittstelle Struktur entspricht Klasse zu verbinden.


Ich glaube, Microsoft beiden Optionen zu ermöglichen, gerade beschlossen, die Konsistenz zu halten mit ref class/ref struct und value class/value struct. Da Schnittstellen jedoch keine privaten Mitglieder haben, werden die beiden Anweisungen für die Schnittstelle genau gleich.

+0

Jetzt, wenn ich das weiß, denke ich, dass das redundante Konstrukt eingeführt wurde, weil die Schöpfer von C++/CLI darauf abzielten, die Anzahl der neuen Schlüsselwörter zu reduzieren. Aus diesem Grund haben sie eine Lösung entwickelt, die als kontextsensitive Schlüsselwörter bezeichnet wird. Sie konnten das Schlüsselwort "interface" nicht einführen, weil es mit vielen bereits geschriebenen Quellcodes kollidieren würde (z. B. "interface" -Typname). Also haben sie sich wahrscheinlich dafür entschieden, es mit dem Klassenschlüsselwort zu verbinden, nur um einen Kontext zu erstellen, und mit dem Schlüsselwort struct, um konsistent zu sein. –

1

Es gibt keinen Unterschied. Sie sind gleichwertig.

Denken Sie daran, als in 'echten' C++ gibt es eigentlich fast keinen Unterschied zwischen struct und Klasse, abgesehen von der Standard Zugänglichkeit von Mitgliedern. Im Paralleluniversum von C++/CLI, wo sich die Zugriffsregeln ohnehin unterscheiden, ist es nicht völlig verrückt, dass sie gleichwertig sind.

+0

Was meinst du mit "(...) wo sind die Zugangsregeln sowieso anders?"? Wie unterscheiden sie sich? –

+0

Nun, für den Anfang haben Sie mehr Optionen als in C++, da Sie Dinge wie 'öffentlich geschützt' und 'privat geschützt' haben, die in 'normalem' C++ nicht vorhanden sind. –