C++ 内存库 const_pointer_cast


描述

它返回正确类型的 sp 副本,其存储的指针 const 从 U* 强制转换为 T*。

宣言

以下是 std::const_pointer_cast 的声明。

template <class T, class U>
  shared_ptr<T> const_pointer_cast (const shared_ptr<U>& sp) noexcept;

C++11

template <class T, class U>
  shared_ptr<T> const_pointer_cast (const shared_ptr<U>& sp) noexcept;

参数

sp - 它是一个共享指针。

返回值

它返回正确类型的 sp 副本,其存储的指针 const 从 U* 强制转换为 T*。

例外情况

noexcep - 它不会抛出任何异常。

例子

在下面的示例中解释了 std::const_pointer_cast。

#include <iostream>
#include <memory>

int main () {
   std::shared_ptr<int> foo;
   std::shared_ptr<const int> bar;

   foo = std::make_shared<int>(100);

   bar = std::const_pointer_cast<const int>(foo);

   std::cout << "*bar: " << *bar << '\n';
   *foo = 200;
   std::cout << "*bar: " << *bar << '\n';

   return 0;
}

让我们编译并运行上面的程序,这将产生以下结果 -

*bar: 100
*bar: 200
内存.htm