C++ 内存库 - static_pointer_cast


描述

它使用 alloc 为 T 类型的对象分配内存,并通过将 args 传递给其构造函数来构造该对象。该函数返回一个shared_ptr类型的对象拥有并存储指向构造对象的指针。

宣言

以下是 std::static_pointer_cast 的声明。

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

C++11

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

参数

sp - 它是一个共享指针。

返回值

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

例外情况

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

例子

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

#include <iostream>
#include <memory>

struct BaseClass {};

struct DerivedClass : BaseClass {
   void f() const {
      std::cout << "Sample word!\n";
   }
};
 
int main() {
   std::shared_ptr<BaseClass> ptr_to_base(std::make_shared<DerivedClass>());

   std::static_pointer_cast<DerivedClass>(ptr_to_base)->f();

   static_cast<DerivedClass*>(ptr_to_base.get())->f();

}

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

Sample word!
Sample word!
内存.htm