Biblioteca de memória C ++ - static_pointer_cast

Descrição

Ele aloca memória para um objeto do tipo T usando aloc e o constrói passando args para seu construtor. A função retorna um objeto do tipo shared_ptr que possui e armazena um ponteiro para o objeto construído.

Declaração

A seguir está a declaração para 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;

Parâmetros

sp - É um ponteiro compartilhado.

Valor de retorno

Ele retorna uma cópia de sp do tipo apropriado com seu ponteiro armazenado convertido estaticamente de U * para T *.

Exceções

noexcep - Não lança nenhuma exceção.

Exemplo

No exemplo a seguir, explica sobre 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();

}

Vamos compilar e executar o programa acima, isso produzirá o seguinte resultado -

Sample word!
Sample word!