Compartilhar via


interior_ptr (C++/CLI)

Um ponteiro interior declara um ponteiro para dentro de um tipo de referência, mas não o próprio objeto.Um ponteiro interior pode apontar para um identificador de referência, o tipo de valor, o identificador de tipo, membro de um tipo gerenciado ou para um elemento de uma matriz gerenciada.

Todos os tempos de execução

(Não há nenhum comentários para esse recurso de linguagem que se aplicam a todos os tempos de execução.)

Tempo de execução do Windows

(Não há nenhum comentários para esse recurso de linguagem que se aplicam somente ao runtime do Windows.)

y0fh545k.collapse_all(pt-br,VS.110).gifRequisitos

Opção de compilador:/ZW

Common Language Runtime

O exemplo de sintaxe a seguir demonstra um ponteiro interior.

y0fh545k.collapse_all(pt-br,VS.110).gifSintaxe

cli::interior_ptr<cv_qualifier type> var = &initializer;

y0fh545k.collapse_all(pt-br,VS.110).gifParâmetros

  • cv_qualifier
    Const ou volatile qualificadores.

  • tipo
    O tipo de inicializador.

  • var
    O nome do interior_ptr variável.

  • inicializador
    Um membro de um tipo de referência, um elemento de uma matriz gerenciada ou qualquer outro objeto que você pode atribuir um ponteiro nativo.

y0fh545k.collapse_all(pt-br,VS.110).gifComentários

Um ponteiro nativo não é capaz de controlar um item como as alterações de suas localização no heap gerenciado, o que resulta do coletor de lixo mover instâncias de um objeto.Para um ponteiro para se referir à instância de corretamente, o tempo de execução precisa atualizar o ponteiro para o objeto posicionado recentemente.

Um interior_ptr representa um superconjunto da funcionalidade de um ponteiro nativo.Portanto, tudo o que pode ser atribuído a um ponteiro nativo também pode ser atribuído a uma interior_ptr.Um ponteiro interior é permitido para executar o mesmo conjunto de operações como ponteiros nativos, incluindo comparação e aritmética de ponteiro.

Um ponteiro interior só pode ser declarado na pilha.Um ponteiro interior não pode ser declarado como um membro de uma classe.

Como ponteiros interiores somente na pilha, pegar o endereço de um ponteiro interior produz um ponteiro não gerenciado.

interior_ptrtem uma conversão implícita para bool, que permite seu uso em instruções condicionais.

Para obter informações sobre como declarar um ponteiro interior que aponta para um objeto que não pode ser movido no heap de coleta de lixo, consulte pin_ptr.

interior_ptrestá no namespace cli.Consulte Namespaces Plataforma, padrão e cli (Extensões de Componentes C++) para maiores informações.

Para obter mais informações sobre ponteiros interiores, consulte

y0fh545k.collapse_all(pt-br,VS.110).gifRequisitos

Opção de compilador:/clr

y0fh545k.collapse_all(pt-br,VS.110).gifExemplos

Exemplo

O exemplo a seguir mostra como declarar e usar um ponteiro interior em um tipo de referência.

// interior_ptr.cpp
// compile with: /clr
using namespace System;

ref class MyClass {
public:
   int data;
};

int main() {
   MyClass ^ h_MyClass = gcnew MyClass;
   h_MyClass->data = 1;
   Console::WriteLine(h_MyClass->data);

   interior_ptr<int> p = &(h_MyClass->data);
   *p = 2;
   Console::WriteLine(h_MyClass->data);

   // alternatively
   interior_ptr<MyClass ^> p2 = &h_MyClass;
   (*p2)->data = 3;
   Console::WriteLine((*p2)->data);
}

Saída

  
  
  

Consulte também

Conceitos

Extensões de componente para plataformas de tempo de execução