我遇到了这段代码:
const std::shared_ptr<const T>& a_shared_pointer,
我真的很好奇这两个 const 是什么意思?它们是同一意思吗? a_shared_pointer 是指向我们无法修改的东西的共享指针吗?
答案 0 :(得分:3)
就解除引用和保持一致性而言,共享指针类似于原始指针。
请注意,下面的术语[const]
意味着我们可以选择是否插入const:
[const] X * [const] p;
X* p;
-p是一个可变的X指针(可以更改为指向另一个X)
const X *p
-p是指向不可变X的可变指针
X * const p;
-p是指向可变X的不变指针(只能指向此X)
const X * const p;
-p是指向不变X的不变指针(只能指向该X)
std::shared_ptr<T> &p
-引用指向可变T的可变指针
const std::shared_ptr<T> &p
-指向可变T的不变指针的引用
std::shared_ptr<const T> &p
-指向不可变T的可变指针的引用
const std::shared_ptr<const T> &p
-指向不可变T的不可变指针的引用
答案 1 :(得分:1)
a_shared指针是对const std::shared_ptr
的引用(例如,您不能通过该引用对指针进行非const操作,例如reset
等),指向const T
意味着指向对象的对象也是const(因此,再次不能执行a_shared_ptr->non_const_method()
)。