Wie benutze ich const_cast?

10

Ich habe eine private Variable definiert als:

%Vor%

Ich versuche, einen Kopierkonstruktor zu schreiben, und ich muss die Konstanz wegwerfen, um dies zu tun, leider verstehe ich nicht, wie man const_cast benutzt.

Das versuche ich in meinem Kopierkonstruktor:

%Vor%

Das funktioniert nicht ... Ich bin nicht sicher, was die Syntax dafür ist

    
Sarah 24.10.2013, 00:34
quelle

2 Antworten

34

Sie dürfen const_cast Variablen, die tatsächlich const sind, nicht verwenden. Dies führt zu undefiniertem Verhalten. const_cast wird verwendet, um die Konstante aus Referenzen und Zeigern zu entfernen, die sich auf etwas beziehen, das nicht const ist.

Also, das ist erlaubt:

%Vor%

Es ist erlaubt, weil i , dem Objekt, dem es zugewiesen ist, nicht const ist. Das Folgende ist nicht erlaubt:

%Vor%

weil hier i ist const und Sie modifizieren es, indem Sie ihm einen neuen Wert zuweisen. Der Code wird kompiliert, aber sein Verhalten ist undefiniert (was von "es funktioniert einfach gut" bis "das Programm wird abstürzen" bedeuten kann).

Sie sollten konstante Datenelemente in den Initialisierern des Konstruktors initialisieren, anstatt sie im Rumpf der Konstruktoren zuzuordnen:

%Vor%     
timrau 24.10.2013, 00:37
quelle
-2

In Ihrem Code versuchen Sie, diesen Zeiger anstelle der Variablen zu setzen. Sie können Folgendes versuchen:

%Vor%     
Ravi Podugu 03.03.2018 01:49
quelle

Tags und Links