Wenn mehrere const-Eigenschaften einer C ++ - Klasse von einer Zwischenberechnung abhängen, was ist der einfachste Weg, sie zu initialisieren?
Wie korrigiere ich zum Beispiel den Konstruktor für die Klasse?
%Vor%Mit C ++ 11 können Sie einfach einen delegierenden Konstruktor verwenden:
%Vor%Sie könnten so etwas tun - nicht schön, aber sollten es tun:
%Vor%Dies wird ein bisschen funktionieren für diejenigen von uns, die es vorziehen, in ihrer Programmierung weniger fortgeschritten zu sein:
%Vor%Das zusätzliche Element stellt einen unnötigen Overhead dar, der für die vorliegende Aufgabe von Bedeutung sein kann oder auch nicht. OTOH, der Code ist einfach.
Denken Sie daran, iamStupid
vor a
und b
zu deklarieren! (siehe Kommentare)
Const ist ein Vertrag zwischen dem Benutzer und dem Implementierer einer Klasse. Es gibt an, dass der Klassenbenutzer die Elementvariablen nicht ändern sollte, wodurch ein unveränderliches Objektdesign bereitgestellt wird. Es ist in Ordnung, wenn ein Konstruktor diesen Zustand anderweitig initialisiert. Es ist jedoch besser, diese hinter einem privaten Zugriffsqualifizierer zu verbergen und Zugriffsberechtigungen bereitzustellen, die schreibgeschützt sind. Die korrekte Methode, um const-ness vorübergehend zu entfernen, ist die Verwendung von const_cast & lt; & gt;.
%Vor%};
Sie könnten a
und b
private setzen und Gettern den Zugriff auf ihre Werte außerhalb der Klasse ermöglichen.
Oder Sie könnten einfach Unterobjektinitialisierer verwenden und die Zufallszahl irgendwie zwischenspeichern. Wenn Sie die Optimierung aktivieren, wird möglicherweise sogar die temporäre Variable im generierten Programmtext entfernt.
%Vor% Oder Sie können faul sein und nur die ursprüngliche Zufallszahl speichern und a, b
bei Bedarf generieren.
Tags und Links const c++ constructor