Ich schreibe eine Zugriffsmethode für einen gemeinsam genutzten Zeiger in C ++, die ungefähr so aussieht:
class Foo {
public:
return_type getBar() const {
return m_bar;
}
private:
boost::shared_ptr<Bar> m_bar;
}
Um die Konstanz des getBar()
Rückgabetyps zu unterstützen, sollte ein Wert verwendet werden boost::shared_ptr
, der eine Änderung des Zeigertyps verhindert Bar
. Ich vermute, dass dies shared_ptr<const Bar>
der Typ ist, zu dem ich zurückkehren möchte, während const shared_ptr<Bar>
dies eine Neuzuweisung des Zeigers selbst verhindern würde, um auf einen anderen zu zeigen, Bar
aber eine Änderung des Zeigers zulässt, auf den Bar
er zeigt ... Ich bin mir jedoch nicht sicher. Ich würde es begrüßen, wenn jemand, der es genau weiß, dies entweder bestätigen oder mich korrigieren könnte, wenn ich etwas falsch gemacht hätte. Vielen Dank!
const
ändert normalerweise, was _preced es ist, T *const
ist also ein const
Zeiger auf T
und T const*
ist ein Zeiger auf const
T
. Und es ist am besten zu vermeiden, const
mit nichts davor zu verwenden.
T *const
und T const *
ist der gleiche wie der Unterschied zwischen const shared_ptr<T>
undshared_ptr<const T>
*
und dies->
bestätigen.