Heim  >  Artikel  >  Backend-Entwicklung  >  Wie initialisiere ich ein Const-Array in einem Klasseninitialisierer in C?

Wie initialisiere ich ein Const-Array in einem Klasseninitialisierer in C?

Barbara Streisand
Barbara StreisandOriginal
2024-11-04 04:27:01231Durchsuche

How to Initialize a Const Array in a Class Initializer in C  ?

Initialisieren eines Const-Arrays in einem Klasseninitialisierer in C

In C kann das Initialisieren eines Const-Arrays in der Initialisiererliste einer Klasse erscheinen wie eine Herausforderung aufgrund der Beschränkung des const-Schlüsselworts auf funktionsinterne Änderungen. Diese Aufgabe wird jedoch mit der Einführung von C 11 ermöglicht.

Zuvor war die Initialisierung eines const-Arrays im Konstruktorkörper nicht möglich. Versuche, dies zu tun, wie im bereitgestellten Beispielcode, führten zu Fehlern. Dies lag daran, dass const-Variablen nach der Initialisierung nicht mehr geändert werden können.

In C 11 ergab sich jedoch eine Lösung: das Initialisieren des Arrays innerhalb der Initialisierungsliste des Konstruktors. Dieser Ansatz ermöglicht es uns, die Elemente des Arrays direkt anzugeben:

<code class="cpp">struct a {
    const int b[2];
    // other stuff follows

    // Here's the constructor
    a() :
        b{2, 3}
    {
        // other constructor work
    }
};</code>

In diesem Beispiel wird das Array b mit den Elementen {2, 3} initialisiert. Diese Initialisierung stellt sicher, dass die Werte von b während der gesamten Lebensdauer des Objekts konstant bleiben.

Es ist wichtig zu beachten, dass verschiedene Instanzen der Klasse a unterschiedliche Werte für b haben können. Die Werte für eine bestimmte Instanz bleiben jedoch konstant, nachdem der Konstruktor ausgeführt wurde. Dieses Verhalten unterscheidet diese Arrays von nicht-konstanten Arrays, die während der Lebensdauer des Objekts geändert werden können.

Das obige ist der detaillierte Inhalt vonWie initialisiere ich ein Const-Array in einem Klasseninitialisierer in C?. 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