答えは、use_count()
でいくつかのテストを行うことによって推測できます。
はまた、方法の解像度は完全に明白ではないかもしれどのように気づく:
class B {};
class A {
std::shared_ptr<B> m_b;
public:
A() { m_b = std::make_shared<B>(); }
std::shared_ptr<const B> get_b() const {
std::cout << "const" << std::endl;
return m_b;
}
std::shared_ptr<B> get_b() {
std::cout << "non const" << std::endl;
return m_b;
}
};
int main(int, char **) {
A a;
std::shared_ptr<B> b = a.get_b();
std::cout << b.use_count() << std::endl;
std::shared_ptr<const B> cb = a.get_b();
std::cout << cb.use_count() << std::endl;
const A &a_const_ref = a;
std::shared_ptr<const B> ccb = a_const_ref.get_b();
std::cout << ccb.use_count() << std::endl;
return 0;
}
出力:
non const
2
non const
3
const
4
ます。また `方法に類似get_const_bを()`、実装したい場合があります
'cbeginを()'標準的なコンテナの 'cend()'(http://en.cppreference.com/w/cpp/container/vector/begin)を参照してください。 – filipos