Heim >Backend-Entwicklung >C++ >Wie können Eigenschaften in C 11 mithilfe von Syntax Sugar implementiert werden?

Wie können Eigenschaften in C 11 mithilfe von Syntax Sugar implementiert werden?

Barbara Streisand
Barbara StreisandOriginal
2024-10-27 21:07:30380Durchsuche

How Can Properties be Implemented in C  11 Using Syntax Sugar?

Eigenschaften in C 11

C#:

<code class="csharp">public Foo foo { get; private set; }</code>

C :

<code class="cpp">private:
    Foo foo;
public:
    Foo getFoo() { return foo; }</code>

C 11 Syntax Sugar

C 11 bietet keinen direkten Syntax Sugar für Eigenschaften, aber Sie können Ihren eigenen definieren. Mit unbenannten Klassen können Sie eine Struktur wie die folgende erstellen:

<code class="cpp">struct Foo
{
    class {
        int value;
        public:
            int &operator=(const int &i) { return value = i; }
            operator int() const { return value; }
    } alpha;

    class {
        float value;
        public:
            float &operator=(const float &f) { return value = f; }
            operator float() const { return value; }
    } bravo;
};</code>

Diese Struktur ermöglicht Ihnen den Zugriff auf Mitglieder wie Eigenschaften:

<code class="cpp">Foo foo;

foo.alpha = 10; // Equivalent to foo.setAlpha(10)
int i = foo.alpha; // Equivalent to foo.getAlpha()</code>

Sie können diese Implementierung durch Hinzufügen von Getter weiter anpassen und Setter-Methoden und Erweiterung der Struktur, um den Zugriff auf Klassenmitglieder zu unterstützen.

Das obige ist der detaillierte Inhalt vonWie können Eigenschaften in C 11 mithilfe von Syntax Sugar implementiert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn