Soweit ich in C++ weiß, werden struct/class Mitglieder mit der gleichen Zugriffskontrolle im Speicher in der Reihenfolge der Deklaration gespeichert.Deaktiviert das änderbare Element const-Optimierungen für nicht veränderbare Mitglieder?
#include <cstdlib>
#include <iostream>
struct X
{
mutable int m;
int c;
};
const X cx = {0, 1};
int main()
{
X& x = const_cast<X&>(cx);
x.m = rand();
x.c = rand();
std::cout<<x.m<<" "<<x.c;
}
das Programm ausgeführt wird und druckt 2 Zufallszahlen In diesem Beispiel: Als nächstes wird Beispiel m
und c
sollten nacheinander gespeichert werden. Wenn ich mutable
entferne, stürzt es ab, weil cx
im schreibgeschützten Speicher gespeichert wird. Diese
machte mich fragen - ist ein mutable
Mitglied const
Optimierungen für die gesamte struct
deaktivieren (irgendwie alle Mitglieder machen mutable
)?
Ist es möglich, Teile eines struct
in Nur-Lese-Speicher und andere Teile auf Nicht-Nur-Lese-Speicher und Respekt C++ Standard-Speicherlayout zu speichern?
Dies wurde mit Visual Studio 2010 unter Windows 7 und GCC 4.7.2 unter Ubuntu getestet.
Ich habe X() -Konstruktor hinzugefügt, dass inits m und c und cx nicht im schreibgeschützten Speicher wie zuvor ist. Sehr interessante Einsicht, danke! – Felics