Was ist der richtige Weg, um die const Korrektheit einer Klasse auf ihre spitzen Mitglieder zu erweitern? In dem Beispielcode ist die konstante Version der Methode get, um ein std::shared_ptr
zu erstellen, dessen Referenzzähler mit dem internen Mitglied m_b
identisch ist, oder beginnt es wieder mit 0
?
shared_ptr
behält immer Referenzzählungen, wenn Sie aus einem anderen shared_ptr
konstruieren; Die einzige Möglichkeit, unsicher zu verwenden, besteht darin, aus einem rohen Zeiger zu konstruieren: shared_ptr<...>(my_ptr.get()) // don't do this
.
Sie könnten auch an dem propagate_const
-Wrapper interessiert sein, der sich in der Bibliothek Fundamentals TS befindet v2 wird wahrscheinlich bald in Ihrer Implementierung verfügbar sein.
Die Antwort kann abgeleitet werden, indem einige Tests mit use_count()
durchgeführt werden.
Beachten Sie auch, dass die Methodenauflösung möglicherweise nicht ganz offensichtlich ist:
%Vor%Ausgabe:
%Vor%Tags und Links const-correctness c++ getter shared-ptr