常量shared_ptr:我需要两个还是只需要一个

const in shared_ptr: do I need two or only one

本文关键字:一个 两个 shared ptr 常量      更新时间:2023-10-16

我遇到了这段代码:

const std::shared_ptr<const T>& a_shared_pointer,

我真的很好奇这两个常量是什么意思?它们的意思是一样的吗?a_shared_pointer指向我们无法修改的内容的共享指针?

共享指针在取消引用和恒常性方面与原始指针相似。

例:

请注意,下面,术语[const]意味着我们可以选择是否插入 const:

[const] X * [const] p;

为我们提供了 4 个关于恒常性的选项:

X* p;- p 是指向可变 X 的可变指针(可以更改为指向不同的 X(

const X *p- p 是指向不可变 X 的可变指针

X * const p;- p 是指向可变 X 的不可变指针(只能指向此 X(

const X * const p;- p 是一个不可变的指针(只能指向这个 X(到一个不可变的 X

与shared_ptr类似:

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 的不可变指针

a_shared指针是对const std::shared_ptr的引用(例如,你不能通过这个引用调用指针上的 not const 操作,如reset等(,指向一个const T意味着指向的对象也是 const (所以同样,你不能做a_shared_ptr->non_const_method()(。

相关文章: