注意: 需要c 11的支持
const 与 shared_ptr 之间的组合不是很常见,最多的也只是在传递参数时:
shared_ptr func(const shared_ptr &ptr) {
*ptr = 1;
return ptr;
}
这里的 const shared_ptr
和常规的 const t &p
一样,这里的const都是顶层const,也就是说我们不能改变ptr的地址,也不能改变p的值。
常规的内置指针和const有以下组合:
constexptr int a = 5; // a定义在函数体之外。
const int *ptr1 = &a; // 指向整型常量 的 指针
int const *ptr2 = &a; // 指向整型 的 常量指针
const int const *ptr3 = &a; // 指向整型常量 的 常量指针
constexpr int *ptr4 = &a; // 指向整型 的 常量指针
constexpr const int *ptr5 = &a; // 指向整型常量 的 常量指针
shared_ptr与const也有一下组合:
int a = 5;
const shared_ptr ptr1 = make_shared(a); // 指向整型 的 常量智能指针
shared_ptr ptr1 = make_shared(a); // 指向整型常量 的 智能指针
const shared_ptr ptr3 = make_shared(a); // 指向整型常量 的 常量智能指针