shared_ptr<const T> p等同于const T * p(或者相当于T const * p), 也就是说, 指向的对象是const。
而const shared_ptr<T> p 等同于T* const p。总结如下:
shared_ptr<T> p; ---> T * p; : nothing is const
const shared_ptr<T> p; ---> T * const p; : p is const
shared_ptr<const T> p; ---> const T * p; <=> T const * p; : *p is const
const shared_ptr<const T> p; ---> const T * const p; <=> T const * const p; : p and *p are const.